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 4 5declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i8>, i64, i64) 6declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 7 8define <vscale x 1 x i8> @test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 9; CHECK-LABEL: test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i8: 10; CHECK: # %bb.0: # %entry 11; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 12; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 13; CHECK-NEXT: vmv1r.v v8, v10 14; CHECK-NEXT: ret 15entry: 16 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 3) 17 %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) 18 ret <vscale x 1 x i8> %1 19} 20 21define <vscale x 1 x i8> @test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 22; CHECK-LABEL: test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i8: 23; CHECK: # %bb.0: # %entry 24; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 25; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 26; CHECK-NEXT: vmv1r.v v8, v10 27; CHECK-NEXT: ret 28entry: 29 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 30 %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) 31 ret <vscale x 1 x i8> %1 32} 33 34define <vscale x 1 x i8> @test_vluxseg2_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 35; CHECK-LABEL: test_vluxseg2_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i8: 36; CHECK: # %bb.0: # %entry 37; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 38; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 39; CHECK-NEXT: vmv1r.v v8, v10 40; CHECK-NEXT: ret 41entry: 42 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> splat (i1 true), i64 %vl, i64 1, i64 3) 43 %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) 44 ret <vscale x 1 x i8> %1 45} 46 47declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i16>, i64, i64) 48declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 49 50define <vscale x 1 x i8> @test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 51; CHECK-LABEL: test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i16: 52; CHECK: # %bb.0: # %entry 53; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 54; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 55; CHECK-NEXT: vmv1r.v v8, v10 56; CHECK-NEXT: ret 57entry: 58 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 3) 59 %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) 60 ret <vscale x 1 x i8> %1 61} 62 63define <vscale x 1 x i8> @test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 64; CHECK-LABEL: test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i16: 65; CHECK: # %bb.0: # %entry 66; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 67; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 68; CHECK-NEXT: vmv1r.v v8, v10 69; CHECK-NEXT: ret 70entry: 71 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 72 %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) 73 ret <vscale x 1 x i8> %1 74} 75 76declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i32>, i64, i64) 77declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 78 79define <vscale x 1 x i8> @test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 80; CHECK-LABEL: test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i32: 81; CHECK: # %bb.0: # %entry 82; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 83; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 84; CHECK-NEXT: vmv1r.v v8, v10 85; CHECK-NEXT: ret 86entry: 87 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 3) 88 %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) 89 ret <vscale x 1 x i8> %1 90} 91 92define <vscale x 1 x i8> @test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 93; CHECK-LABEL: test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i32: 94; CHECK: # %bb.0: # %entry 95; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 96; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 97; CHECK-NEXT: vmv1r.v v8, v10 98; CHECK-NEXT: ret 99entry: 100 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 101 %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) 102 ret <vscale x 1 x i8> %1 103} 104 105declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i64>, i64, i64) 106declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 107 108define <vscale x 1 x i8> @test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 109; CHECK-LABEL: test_vluxseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i64: 110; CHECK: # %bb.0: # %entry 111; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 112; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 113; CHECK-NEXT: vmv1r.v v8, v10 114; CHECK-NEXT: ret 115entry: 116 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv1i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 3) 117 %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) 118 ret <vscale x 1 x i8> %1 119} 120 121define <vscale x 1 x i8> @test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 122; CHECK-LABEL: test_vluxseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t_nxv1i64: 123; CHECK: # %bb.0: # %entry 124; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 125; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 126; CHECK-NEXT: vmv1r.v v8, v10 127; CHECK-NEXT: ret 128entry: 129 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 130 %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) 131 ret <vscale x 1 x i8> %1 132} 133 134declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i8>, i64, i64) 135declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 136 137define <vscale x 2 x i8> @test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 138; CHECK-LABEL: test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i8: 139; CHECK: # %bb.0: # %entry 140; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 141; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 142; CHECK-NEXT: vmv1r.v v8, v10 143; CHECK-NEXT: ret 144entry: 145 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 3) 146 %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) 147 ret <vscale x 2 x i8> %1 148} 149 150define <vscale x 2 x i8> @test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 151; CHECK-LABEL: test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i8: 152; CHECK: # %bb.0: # %entry 153; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 154; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 155; CHECK-NEXT: vmv1r.v v8, v10 156; CHECK-NEXT: ret 157entry: 158 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 159 %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) 160 ret <vscale x 2 x i8> %1 161} 162 163declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i16>, i64, i64) 164declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 165 166define <vscale x 2 x i8> @test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 167; CHECK-LABEL: test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i16: 168; CHECK: # %bb.0: # %entry 169; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 170; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 171; CHECK-NEXT: vmv1r.v v8, v10 172; CHECK-NEXT: ret 173entry: 174 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 3) 175 %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) 176 ret <vscale x 2 x i8> %1 177} 178 179define <vscale x 2 x i8> @test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 180; CHECK-LABEL: test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i16: 181; CHECK: # %bb.0: # %entry 182; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 183; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 184; CHECK-NEXT: vmv1r.v v8, v10 185; CHECK-NEXT: ret 186entry: 187 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 188 %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) 189 ret <vscale x 2 x i8> %1 190} 191 192declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i32>, i64, i64) 193declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 194 195define <vscale x 2 x i8> @test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 196; CHECK-LABEL: test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i32: 197; CHECK: # %bb.0: # %entry 198; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 199; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 200; CHECK-NEXT: vmv1r.v v8, v10 201; CHECK-NEXT: ret 202entry: 203 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 3) 204 %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) 205 ret <vscale x 2 x i8> %1 206} 207 208define <vscale x 2 x i8> @test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 209; CHECK-LABEL: test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i32: 210; CHECK: # %bb.0: # %entry 211; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 212; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 213; CHECK-NEXT: vmv1r.v v8, v10 214; CHECK-NEXT: ret 215entry: 216 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <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_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1) 218 ret <vscale x 2 x i8> %1 219} 220 221declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i64>, i64, i64) 222declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 223 224define <vscale x 2 x i8> @test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 225; CHECK-LABEL: test_vluxseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i64: 226; CHECK: # %bb.0: # %entry 227; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 228; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 229; CHECK-NEXT: vmv1r.v v8, v11 230; CHECK-NEXT: ret 231entry: 232 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 3) 233 %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) 234 ret <vscale x 2 x i8> %1 235} 236 237define <vscale x 2 x i8> @test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 238; CHECK-LABEL: test_vluxseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t_nxv2i64: 239; CHECK: # %bb.0: # %entry 240; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 241; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 242; CHECK-NEXT: vmv1r.v v8, v11 243; CHECK-NEXT: ret 244entry: 245 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 246 %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) 247 ret <vscale x 2 x i8> %1 248} 249 250declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i8>, i64, i64) 251declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 252 253define <vscale x 4 x i8> @test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 254; CHECK-LABEL: test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i8: 255; CHECK: # %bb.0: # %entry 256; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 257; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 258; CHECK-NEXT: vmv1r.v v8, v10 259; CHECK-NEXT: ret 260entry: 261 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 3) 262 %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) 263 ret <vscale x 4 x i8> %1 264} 265 266define <vscale x 4 x i8> @test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 267; CHECK-LABEL: test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i8: 268; CHECK: # %bb.0: # %entry 269; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 270; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 271; CHECK-NEXT: vmv1r.v v8, v10 272; CHECK-NEXT: ret 273entry: 274 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 275 %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) 276 ret <vscale x 4 x i8> %1 277} 278 279declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i16>, i64, i64) 280declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 281 282define <vscale x 4 x i8> @test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 283; CHECK-LABEL: test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i16: 284; CHECK: # %bb.0: # %entry 285; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 286; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 287; CHECK-NEXT: vmv1r.v v8, v10 288; CHECK-NEXT: ret 289entry: 290 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 3) 291 %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) 292 ret <vscale x 4 x i8> %1 293} 294 295define <vscale x 4 x i8> @test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 296; CHECK-LABEL: test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i16: 297; CHECK: # %bb.0: # %entry 298; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 299; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 300; CHECK-NEXT: vmv1r.v v8, v10 301; CHECK-NEXT: ret 302entry: 303 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 304 %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) 305 ret <vscale x 4 x i8> %1 306} 307 308declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i32>, i64, i64) 309declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 310 311define <vscale x 4 x i8> @test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 312; CHECK-LABEL: test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i32: 313; CHECK: # %bb.0: # %entry 314; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 315; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 316; CHECK-NEXT: vmv1r.v v8, v11 317; CHECK-NEXT: ret 318entry: 319 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 3) 320 %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) 321 ret <vscale x 4 x i8> %1 322} 323 324define <vscale x 4 x i8> @test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 325; CHECK-LABEL: test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i32: 326; CHECK: # %bb.0: # %entry 327; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 328; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 329; CHECK-NEXT: vmv1r.v v8, v11 330; CHECK-NEXT: ret 331entry: 332 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 333 %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) 334 ret <vscale x 4 x i8> %1 335} 336 337declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i64>, i64, i64) 338declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 339 340define <vscale x 4 x i8> @test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 341; CHECK-LABEL: test_vluxseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i64: 342; CHECK: # %bb.0: # %entry 343; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 344; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 345; CHECK-NEXT: vmv1r.v v8, v13 346; CHECK-NEXT: ret 347entry: 348 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 3) 349 %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) 350 ret <vscale x 4 x i8> %1 351} 352 353define <vscale x 4 x i8> @test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 354; CHECK-LABEL: test_vluxseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t_nxv4i64: 355; CHECK: # %bb.0: # %entry 356; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 357; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 358; CHECK-NEXT: vmv1r.v v8, v13 359; CHECK-NEXT: ret 360entry: 361 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 362 %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) 363 ret <vscale x 4 x i8> %1 364} 365 366declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i8>, i64, i64) 367declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 368 369define <vscale x 8 x i8> @test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 370; CHECK-LABEL: test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i8: 371; CHECK: # %bb.0: # %entry 372; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 373; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 374; CHECK-NEXT: vmv1r.v v8, v10 375; CHECK-NEXT: ret 376entry: 377 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 3) 378 %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) 379 ret <vscale x 8 x i8> %1 380} 381 382define <vscale x 8 x i8> @test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 383; CHECK-LABEL: test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i8: 384; CHECK: # %bb.0: # %entry 385; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 386; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 387; CHECK-NEXT: vmv1r.v v8, v10 388; CHECK-NEXT: ret 389entry: 390 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 391 %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) 392 ret <vscale x 8 x i8> %1 393} 394 395declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i16>, i64, i64) 396declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 397 398define <vscale x 8 x i8> @test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 399; CHECK-LABEL: test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i16: 400; CHECK: # %bb.0: # %entry 401; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 402; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 403; CHECK-NEXT: vmv1r.v v8, v11 404; CHECK-NEXT: ret 405entry: 406 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 3) 407 %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) 408 ret <vscale x 8 x i8> %1 409} 410 411define <vscale x 8 x i8> @test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 412; CHECK-LABEL: test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i16: 413; CHECK: # %bb.0: # %entry 414; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 415; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 416; CHECK-NEXT: vmv1r.v v8, v11 417; CHECK-NEXT: ret 418entry: 419 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 420 %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) 421 ret <vscale x 8 x i8> %1 422} 423 424declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i32>, i64, i64) 425declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 426 427define <vscale x 8 x i8> @test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 428; CHECK-LABEL: test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i32: 429; CHECK: # %bb.0: # %entry 430; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 431; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 432; CHECK-NEXT: vmv1r.v v8, v13 433; CHECK-NEXT: ret 434entry: 435 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 3) 436 %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) 437 ret <vscale x 8 x i8> %1 438} 439 440define <vscale x 8 x i8> @test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 441; CHECK-LABEL: test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i32: 442; CHECK: # %bb.0: # %entry 443; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 444; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 445; CHECK-NEXT: vmv1r.v v8, v13 446; CHECK-NEXT: ret 447entry: 448 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 449 %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) 450 ret <vscale x 8 x i8> %1 451} 452 453declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i64>, i64, i64) 454declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 455 456define <vscale x 8 x i8> @test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 457; CHECK-LABEL: test_vluxseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i64: 458; CHECK: # %bb.0: # %entry 459; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 460; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8 461; CHECK-NEXT: vmv1r.v v8, v17 462; CHECK-NEXT: ret 463entry: 464 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 3) 465 %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) 466 ret <vscale x 8 x i8> %1 467} 468 469define <vscale x 8 x i8> @test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 470; CHECK-LABEL: test_vluxseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t_nxv8i64: 471; CHECK: # %bb.0: # %entry 472; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 473; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8, v0.t 474; CHECK-NEXT: vmv1r.v v8, v17 475; CHECK-NEXT: ret 476entry: 477 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 478 %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) 479 ret <vscale x 8 x i8> %1 480} 481 482declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 16 x i8>, i64, i64) 483declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i8.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i64, i64, i64) 484 485define <vscale x 16 x i8> @test_vluxseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl) { 486; CHECK-LABEL: test_vluxseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i8: 487; CHECK: # %bb.0: # %entry 488; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 489; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 490; CHECK-NEXT: vmv2r.v v8, v12 491; CHECK-NEXT: ret 492entry: 493 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, i64 %vl, i64 3) 494 %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) 495 ret <vscale x 16 x i8> %1 496} 497 498define <vscale x 16 x i8> @test_vluxseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl, <vscale x 16 x i1> %mask) { 499; CHECK-LABEL: test_vluxseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i8: 500; CHECK: # %bb.0: # %entry 501; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 502; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 503; CHECK-NEXT: vmv2r.v v8, v12 504; CHECK-NEXT: ret 505entry: 506 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i1.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 507 %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) 508 ret <vscale x 16 x i8> %1 509} 510 511declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 16 x i16>, i64, i64) 512declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i16.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i64, i64, i64) 513 514define <vscale x 16 x i8> @test_vluxseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl) { 515; CHECK-LABEL: test_vluxseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i16: 516; CHECK: # %bb.0: # %entry 517; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 518; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 519; CHECK-NEXT: vmv2r.v v8, v14 520; CHECK-NEXT: ret 521entry: 522 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, i64 %vl, i64 3) 523 %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) 524 ret <vscale x 16 x i8> %1 525} 526 527define <vscale x 16 x i8> @test_vluxseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl, <vscale x 16 x i1> %mask) { 528; CHECK-LABEL: test_vluxseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i16: 529; CHECK: # %bb.0: # %entry 530; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 531; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 532; CHECK-NEXT: vmv2r.v v8, v14 533; CHECK-NEXT: ret 534entry: 535 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i1.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 536 %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) 537 ret <vscale x 16 x i8> %1 538} 539 540declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 16 x i32>, i64, i64) 541declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i32.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i64, i64, i64) 542 543define <vscale x 16 x i8> @test_vluxseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl) { 544; CHECK-LABEL: test_vluxseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i32: 545; CHECK: # %bb.0: # %entry 546; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 547; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8 548; CHECK-NEXT: vmv2r.v v8, v18 549; CHECK-NEXT: ret 550entry: 551 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, i64 %vl, i64 3) 552 %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) 553 ret <vscale x 16 x i8> %1 554} 555 556define <vscale x 16 x i8> @test_vluxseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl, <vscale x 16 x i1> %mask) { 557; CHECK-LABEL: test_vluxseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t_nxv16i32: 558; CHECK: # %bb.0: # %entry 559; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 560; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8, v0.t 561; CHECK-NEXT: vmv2r.v v8, v18 562; CHECK-NEXT: ret 563entry: 564 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i1.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 565 %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) 566 ret <vscale x 16 x i8> %1 567} 568 569declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv32i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 32 x i8>, i64, i64) 570declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i8.nxv32i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 32 x i8>, <vscale x 32 x i1>, i64, i64, i64) 571 572define <vscale x 32 x i8> @test_vluxseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i8(ptr %base, <vscale x 32 x i8> %index, i64 %vl) { 573; CHECK-LABEL: test_vluxseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i8: 574; CHECK: # %bb.0: # %entry 575; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 576; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 577; CHECK-NEXT: vmv4r.v v8, v16 578; CHECK-NEXT: ret 579entry: 580 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv32i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 32 x i8> %index, i64 %vl, i64 3) 581 %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) 582 ret <vscale x 32 x i8> %1 583} 584 585define <vscale x 32 x i8> @test_vluxseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i8(ptr %base, <vscale x 32 x i8> %index, i64 %vl, <vscale x 32 x i1> %mask) { 586; CHECK-LABEL: test_vluxseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i8: 587; CHECK: # %bb.0: # %entry 588; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 589; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 590; CHECK-NEXT: vmv4r.v v8, v16 591; CHECK-NEXT: ret 592entry: 593 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i1.nxv32i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 32 x i8> %index, <vscale x 32 x i1> %mask, i64 %vl, i64 1, i64 3) 594 %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) 595 ret <vscale x 32 x i8> %1 596} 597 598declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv32i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 32 x i16>, i64, i64) 599declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i16.nxv32i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 32 x i16>, <vscale x 32 x i1>, i64, i64, i64) 600 601define <vscale x 32 x i8> @test_vluxseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i16(ptr %base, <vscale x 32 x i16> %index, i64 %vl) { 602; CHECK-LABEL: test_vluxseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i16: 603; CHECK: # %bb.0: # %entry 604; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 605; CHECK-NEXT: vluxseg2ei16.v v16, (a0), v8 606; CHECK-NEXT: vmv4r.v v8, v20 607; CHECK-NEXT: ret 608entry: 609 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv32i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 32 x i16> %index, i64 %vl, i64 3) 610 %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) 611 ret <vscale x 32 x i8> %1 612} 613 614define <vscale x 32 x i8> @test_vluxseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i16(ptr %base, <vscale x 32 x i16> %index, i64 %vl, <vscale x 32 x i1> %mask) { 615; CHECK-LABEL: test_vluxseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t_nxv32i16: 616; CHECK: # %bb.0: # %entry 617; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 618; CHECK-NEXT: vluxseg2ei16.v v16, (a0), v8, v0.t 619; CHECK-NEXT: vmv4r.v v8, v20 620; CHECK-NEXT: ret 621entry: 622 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i1.nxv32i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 32 x i16> %index, <vscale x 32 x i1> %mask, i64 %vl, i64 1, i64 3) 623 %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) 624 ret <vscale x 32 x i8> %1 625} 626 627declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i8>, i64, i64) 628declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 629 630define <vscale x 1 x i8> @test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 631; CHECK-LABEL: test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i8: 632; CHECK: # %bb.0: # %entry 633; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 634; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 635; CHECK-NEXT: vmv1r.v v8, v10 636; CHECK-NEXT: ret 637entry: 638 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 3) 639 %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) 640 ret <vscale x 1 x i8> %1 641} 642 643define <vscale x 1 x i8> @test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 644; CHECK-LABEL: test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i8: 645; CHECK: # %bb.0: # %entry 646; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 647; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 648; CHECK-NEXT: vmv1r.v v8, v10 649; CHECK-NEXT: ret 650entry: 651 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 652 %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) 653 ret <vscale x 1 x i8> %1 654} 655 656define <vscale x 1 x i8> @test_vluxseg3_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 657; CHECK-LABEL: test_vluxseg3_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i8: 658; CHECK: # %bb.0: # %entry 659; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 660; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 661; CHECK-NEXT: vmv1r.v v8, v10 662; CHECK-NEXT: ret 663entry: 664 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> splat (i1 true), i64 %vl, i64 1, i64 3) 665 %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) 666 ret <vscale x 1 x i8> %1 667} 668 669declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i16>, i64, i64) 670declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 671 672define <vscale x 1 x i8> @test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 673; CHECK-LABEL: test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i16: 674; CHECK: # %bb.0: # %entry 675; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 676; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 677; CHECK-NEXT: vmv1r.v v8, v10 678; CHECK-NEXT: ret 679entry: 680 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 3) 681 %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) 682 ret <vscale x 1 x i8> %1 683} 684 685define <vscale x 1 x i8> @test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 686; CHECK-LABEL: test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i16: 687; CHECK: # %bb.0: # %entry 688; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 689; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 690; CHECK-NEXT: vmv1r.v v8, v10 691; CHECK-NEXT: ret 692entry: 693 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 694 %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) 695 ret <vscale x 1 x i8> %1 696} 697 698declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i32>, i64, i64) 699declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 700 701define <vscale x 1 x i8> @test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 702; CHECK-LABEL: test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i32: 703; CHECK: # %bb.0: # %entry 704; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 705; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 706; CHECK-NEXT: vmv1r.v v8, v10 707; CHECK-NEXT: ret 708entry: 709 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 3) 710 %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) 711 ret <vscale x 1 x i8> %1 712} 713 714define <vscale x 1 x i8> @test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 715; CHECK-LABEL: test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i32: 716; CHECK: # %bb.0: # %entry 717; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 718; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 719; CHECK-NEXT: vmv1r.v v8, v10 720; CHECK-NEXT: ret 721entry: 722 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 723 %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) 724 ret <vscale x 1 x i8> %1 725} 726 727declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i64>, i64, i64) 728declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 729 730define <vscale x 1 x i8> @test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 731; CHECK-LABEL: test_vluxseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i64: 732; CHECK: # %bb.0: # %entry 733; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 734; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 735; CHECK-NEXT: vmv1r.v v8, v10 736; CHECK-NEXT: ret 737entry: 738 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv1i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 3) 739 %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) 740 ret <vscale x 1 x i8> %1 741} 742 743define <vscale x 1 x i8> @test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 744; CHECK-LABEL: test_vluxseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t_nxv1i64: 745; CHECK: # %bb.0: # %entry 746; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 747; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 748; CHECK-NEXT: vmv1r.v v8, v10 749; CHECK-NEXT: ret 750entry: 751 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 752 %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) 753 ret <vscale x 1 x i8> %1 754} 755 756declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i8>, i64, i64) 757declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 758 759define <vscale x 2 x i8> @test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 760; CHECK-LABEL: test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i8: 761; CHECK: # %bb.0: # %entry 762; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 763; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 764; CHECK-NEXT: vmv1r.v v8, v10 765; CHECK-NEXT: ret 766entry: 767 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 3) 768 %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) 769 ret <vscale x 2 x i8> %1 770} 771 772define <vscale x 2 x i8> @test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 773; CHECK-LABEL: test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i8: 774; CHECK: # %bb.0: # %entry 775; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 776; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 777; CHECK-NEXT: vmv1r.v v8, v10 778; CHECK-NEXT: ret 779entry: 780 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 781 %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) 782 ret <vscale x 2 x i8> %1 783} 784 785declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i16>, i64, i64) 786declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 787 788define <vscale x 2 x i8> @test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 789; CHECK-LABEL: test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i16: 790; CHECK: # %bb.0: # %entry 791; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 792; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 793; CHECK-NEXT: vmv1r.v v8, v10 794; CHECK-NEXT: ret 795entry: 796 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 3) 797 %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) 798 ret <vscale x 2 x i8> %1 799} 800 801define <vscale x 2 x i8> @test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 802; CHECK-LABEL: test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i16: 803; CHECK: # %bb.0: # %entry 804; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 805; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 806; CHECK-NEXT: vmv1r.v v8, v10 807; CHECK-NEXT: ret 808entry: 809 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 810 %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) 811 ret <vscale x 2 x i8> %1 812} 813 814declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i32>, i64, i64) 815declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 816 817define <vscale x 2 x i8> @test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 818; CHECK-LABEL: test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i32: 819; CHECK: # %bb.0: # %entry 820; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 821; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 822; CHECK-NEXT: vmv1r.v v8, v10 823; CHECK-NEXT: ret 824entry: 825 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 3) 826 %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) 827 ret <vscale x 2 x i8> %1 828} 829 830define <vscale x 2 x i8> @test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 831; CHECK-LABEL: test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i32: 832; CHECK: # %bb.0: # %entry 833; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 834; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 835; CHECK-NEXT: vmv1r.v v8, v10 836; CHECK-NEXT: ret 837entry: 838 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 839 %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) 840 ret <vscale x 2 x i8> %1 841} 842 843declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i64>, i64, i64) 844declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 845 846define <vscale x 2 x i8> @test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 847; CHECK-LABEL: test_vluxseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i64: 848; CHECK: # %bb.0: # %entry 849; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 850; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 851; CHECK-NEXT: vmv1r.v v8, v11 852; CHECK-NEXT: ret 853entry: 854 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 3) 855 %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) 856 ret <vscale x 2 x i8> %1 857} 858 859define <vscale x 2 x i8> @test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 860; CHECK-LABEL: test_vluxseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t_nxv2i64: 861; CHECK: # %bb.0: # %entry 862; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 863; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 864; CHECK-NEXT: vmv1r.v v8, v11 865; CHECK-NEXT: ret 866entry: 867 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 868 %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) 869 ret <vscale x 2 x i8> %1 870} 871 872declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i8>, i64, i64) 873declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 874 875define <vscale x 4 x i8> @test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 876; CHECK-LABEL: test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i8: 877; CHECK: # %bb.0: # %entry 878; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 879; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 880; CHECK-NEXT: vmv1r.v v8, v10 881; CHECK-NEXT: ret 882entry: 883 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 3) 884 %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) 885 ret <vscale x 4 x i8> %1 886} 887 888define <vscale x 4 x i8> @test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 889; CHECK-LABEL: test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i8: 890; CHECK: # %bb.0: # %entry 891; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 892; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 893; CHECK-NEXT: vmv1r.v v8, v10 894; CHECK-NEXT: ret 895entry: 896 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 897 %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) 898 ret <vscale x 4 x i8> %1 899} 900 901declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i16>, i64, i64) 902declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 903 904define <vscale x 4 x i8> @test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 905; CHECK-LABEL: test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i16: 906; CHECK: # %bb.0: # %entry 907; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 908; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 909; CHECK-NEXT: vmv1r.v v8, v10 910; CHECK-NEXT: ret 911entry: 912 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 3) 913 %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) 914 ret <vscale x 4 x i8> %1 915} 916 917define <vscale x 4 x i8> @test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 918; CHECK-LABEL: test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i16: 919; CHECK: # %bb.0: # %entry 920; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 921; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 922; CHECK-NEXT: vmv1r.v v8, v10 923; CHECK-NEXT: ret 924entry: 925 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 926 %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) 927 ret <vscale x 4 x i8> %1 928} 929 930declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i32>, i64, i64) 931declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 932 933define <vscale x 4 x i8> @test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 934; CHECK-LABEL: test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i32: 935; CHECK: # %bb.0: # %entry 936; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 937; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 938; CHECK-NEXT: vmv1r.v v8, v11 939; CHECK-NEXT: ret 940entry: 941 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 3) 942 %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) 943 ret <vscale x 4 x i8> %1 944} 945 946define <vscale x 4 x i8> @test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 947; CHECK-LABEL: test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i32: 948; CHECK: # %bb.0: # %entry 949; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 950; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 951; CHECK-NEXT: vmv1r.v v8, v11 952; CHECK-NEXT: ret 953entry: 954 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 955 %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) 956 ret <vscale x 4 x i8> %1 957} 958 959declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i64>, i64, i64) 960declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 961 962define <vscale x 4 x i8> @test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 963; CHECK-LABEL: test_vluxseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i64: 964; CHECK: # %bb.0: # %entry 965; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 966; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8 967; CHECK-NEXT: vmv1r.v v8, v13 968; CHECK-NEXT: ret 969entry: 970 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 3) 971 %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) 972 ret <vscale x 4 x i8> %1 973} 974 975define <vscale x 4 x i8> @test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 976; CHECK-LABEL: test_vluxseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t_nxv4i64: 977; CHECK: # %bb.0: # %entry 978; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 979; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8, v0.t 980; CHECK-NEXT: vmv1r.v v8, v13 981; CHECK-NEXT: ret 982entry: 983 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 984 %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) 985 ret <vscale x 4 x i8> %1 986} 987 988declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i8>, i64, i64) 989declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 990 991define <vscale x 8 x i8> @test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 992; CHECK-LABEL: test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i8: 993; CHECK: # %bb.0: # %entry 994; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 995; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 996; CHECK-NEXT: vmv1r.v v8, v10 997; CHECK-NEXT: ret 998entry: 999 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 3) 1000 %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) 1001 ret <vscale x 8 x i8> %1 1002} 1003 1004define <vscale x 8 x i8> @test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1005; CHECK-LABEL: test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i8: 1006; CHECK: # %bb.0: # %entry 1007; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1008; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 1009; CHECK-NEXT: vmv1r.v v8, v10 1010; CHECK-NEXT: ret 1011entry: 1012 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1013 %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) 1014 ret <vscale x 8 x i8> %1 1015} 1016 1017declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i16>, i64, i64) 1018declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 1019 1020define <vscale x 8 x i8> @test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 1021; CHECK-LABEL: test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i16: 1022; CHECK: # %bb.0: # %entry 1023; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1024; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 1025; CHECK-NEXT: vmv1r.v v8, v11 1026; CHECK-NEXT: ret 1027entry: 1028 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 3) 1029 %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) 1030 ret <vscale x 8 x i8> %1 1031} 1032 1033define <vscale x 8 x i8> @test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1034; CHECK-LABEL: test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i16: 1035; CHECK: # %bb.0: # %entry 1036; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1037; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 1038; CHECK-NEXT: vmv1r.v v8, v11 1039; CHECK-NEXT: ret 1040entry: 1041 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1042 %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) 1043 ret <vscale x 8 x i8> %1 1044} 1045 1046declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i32>, i64, i64) 1047declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 1048 1049define <vscale x 8 x i8> @test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 1050; CHECK-LABEL: test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i32: 1051; CHECK: # %bb.0: # %entry 1052; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1053; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8 1054; CHECK-NEXT: vmv1r.v v8, v13 1055; CHECK-NEXT: ret 1056entry: 1057 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 3) 1058 %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) 1059 ret <vscale x 8 x i8> %1 1060} 1061 1062define <vscale x 8 x i8> @test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1063; CHECK-LABEL: test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i32: 1064; CHECK: # %bb.0: # %entry 1065; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1066; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8, v0.t 1067; CHECK-NEXT: vmv1r.v v8, v13 1068; CHECK-NEXT: ret 1069entry: 1070 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1071 %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) 1072 ret <vscale x 8 x i8> %1 1073} 1074 1075declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i64>, i64, i64) 1076declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 1077 1078define <vscale x 8 x i8> @test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 1079; CHECK-LABEL: test_vluxseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i64: 1080; CHECK: # %bb.0: # %entry 1081; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1082; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8 1083; CHECK-NEXT: vmv1r.v v8, v17 1084; CHECK-NEXT: ret 1085entry: 1086 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 3) 1087 %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) 1088 ret <vscale x 8 x i8> %1 1089} 1090 1091define <vscale x 8 x i8> @test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1092; CHECK-LABEL: test_vluxseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t_nxv8i64: 1093; CHECK: # %bb.0: # %entry 1094; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1095; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8, v0.t 1096; CHECK-NEXT: vmv1r.v v8, v17 1097; CHECK-NEXT: ret 1098entry: 1099 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1100 %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) 1101 ret <vscale x 8 x i8> %1 1102} 1103 1104declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 16 x i8>, i64, i64) 1105declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i8.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i64, i64, i64) 1106 1107define <vscale x 16 x i8> @test_vluxseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl) { 1108; CHECK-LABEL: test_vluxseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i8: 1109; CHECK: # %bb.0: # %entry 1110; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1111; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 1112; CHECK-NEXT: vmv2r.v v8, v12 1113; CHECK-NEXT: ret 1114entry: 1115 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 16 x i8> %index, i64 %vl, i64 3) 1116 %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) 1117 ret <vscale x 16 x i8> %1 1118} 1119 1120define <vscale x 16 x i8> @test_vluxseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl, <vscale x 16 x i1> %mask) { 1121; CHECK-LABEL: test_vluxseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i8: 1122; CHECK: # %bb.0: # %entry 1123; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1124; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 1125; CHECK-NEXT: vmv2r.v v8, v12 1126; CHECK-NEXT: ret 1127entry: 1128 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i1.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 1129 %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) 1130 ret <vscale x 16 x i8> %1 1131} 1132 1133declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 16 x i16>, i64, i64) 1134declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i16.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i64, i64, i64) 1135 1136define <vscale x 16 x i8> @test_vluxseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl) { 1137; CHECK-LABEL: test_vluxseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i16: 1138; CHECK: # %bb.0: # %entry 1139; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1140; CHECK-NEXT: vluxseg3ei16.v v12, (a0), v8 1141; CHECK-NEXT: vmv2r.v v8, v14 1142; CHECK-NEXT: ret 1143entry: 1144 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 16 x i16> %index, i64 %vl, i64 3) 1145 %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) 1146 ret <vscale x 16 x i8> %1 1147} 1148 1149define <vscale x 16 x i8> @test_vluxseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl, <vscale x 16 x i1> %mask) { 1150; CHECK-LABEL: test_vluxseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i16: 1151; CHECK: # %bb.0: # %entry 1152; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1153; CHECK-NEXT: vluxseg3ei16.v v12, (a0), v8, v0.t 1154; CHECK-NEXT: vmv2r.v v8, v14 1155; CHECK-NEXT: ret 1156entry: 1157 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i1.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 1158 %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) 1159 ret <vscale x 16 x i8> %1 1160} 1161 1162declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 16 x i32>, i64, i64) 1163declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i32.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i64, i64, i64) 1164 1165define <vscale x 16 x i8> @test_vluxseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl) { 1166; CHECK-LABEL: test_vluxseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i32: 1167; CHECK: # %bb.0: # %entry 1168; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1169; CHECK-NEXT: vluxseg3ei32.v v16, (a0), v8 1170; CHECK-NEXT: vmv2r.v v8, v18 1171; CHECK-NEXT: ret 1172entry: 1173 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 16 x i32> %index, i64 %vl, i64 3) 1174 %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) 1175 ret <vscale x 16 x i8> %1 1176} 1177 1178define <vscale x 16 x i8> @test_vluxseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl, <vscale x 16 x i1> %mask) { 1179; CHECK-LABEL: test_vluxseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t_nxv16i32: 1180; CHECK: # %bb.0: # %entry 1181; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1182; CHECK-NEXT: vluxseg3ei32.v v16, (a0), v8, v0.t 1183; CHECK-NEXT: vmv2r.v v8, v18 1184; CHECK-NEXT: ret 1185entry: 1186 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i1.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 1187 %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) 1188 ret <vscale x 16 x i8> %1 1189} 1190 1191declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i8>, i64, i64) 1192declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 1193 1194define <vscale x 1 x i8> @test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 1195; CHECK-LABEL: test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i8: 1196; CHECK: # %bb.0: # %entry 1197; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1198; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 1199; CHECK-NEXT: vmv1r.v v8, v10 1200; CHECK-NEXT: ret 1201entry: 1202 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 3) 1203 %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) 1204 ret <vscale x 1 x i8> %1 1205} 1206 1207define <vscale x 1 x i8> @test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1208; CHECK-LABEL: test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i8: 1209; CHECK: # %bb.0: # %entry 1210; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1211; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 1212; CHECK-NEXT: vmv1r.v v8, v10 1213; CHECK-NEXT: ret 1214entry: 1215 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1216 %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) 1217 ret <vscale x 1 x i8> %1 1218} 1219 1220define <vscale x 1 x i8> @test_vluxseg4_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1221; CHECK-LABEL: test_vluxseg4_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i8: 1222; CHECK: # %bb.0: # %entry 1223; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1224; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 1225; CHECK-NEXT: vmv1r.v v8, v10 1226; CHECK-NEXT: ret 1227entry: 1228 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> splat (i1 true), i64 %vl, i64 1, i64 3) 1229 %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) 1230 ret <vscale x 1 x i8> %1 1231} 1232 1233declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i16>, i64, i64) 1234declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 1235 1236define <vscale x 1 x i8> @test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 1237; CHECK-LABEL: test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i16: 1238; CHECK: # %bb.0: # %entry 1239; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1240; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 1241; CHECK-NEXT: vmv1r.v v8, v10 1242; CHECK-NEXT: ret 1243entry: 1244 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 3) 1245 %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) 1246 ret <vscale x 1 x i8> %1 1247} 1248 1249define <vscale x 1 x i8> @test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1250; CHECK-LABEL: test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i16: 1251; CHECK: # %bb.0: # %entry 1252; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1253; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 1254; CHECK-NEXT: vmv1r.v v8, v10 1255; CHECK-NEXT: ret 1256entry: 1257 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1258 %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) 1259 ret <vscale x 1 x i8> %1 1260} 1261 1262declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i32>, i64, i64) 1263declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 1264 1265define <vscale x 1 x i8> @test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 1266; CHECK-LABEL: test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i32: 1267; CHECK: # %bb.0: # %entry 1268; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1269; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 1270; CHECK-NEXT: vmv1r.v v8, v10 1271; CHECK-NEXT: ret 1272entry: 1273 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 3) 1274 %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) 1275 ret <vscale x 1 x i8> %1 1276} 1277 1278define <vscale x 1 x i8> @test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1279; CHECK-LABEL: test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i32: 1280; CHECK: # %bb.0: # %entry 1281; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1282; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 1283; CHECK-NEXT: vmv1r.v v8, v10 1284; CHECK-NEXT: ret 1285entry: 1286 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1287 %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) 1288 ret <vscale x 1 x i8> %1 1289} 1290 1291declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i64>, i64, i64) 1292declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 1293 1294define <vscale x 1 x i8> @test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 1295; CHECK-LABEL: test_vluxseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i64: 1296; CHECK: # %bb.0: # %entry 1297; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1298; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 1299; CHECK-NEXT: vmv1r.v v8, v10 1300; CHECK-NEXT: ret 1301entry: 1302 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv1i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 3) 1303 %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) 1304 ret <vscale x 1 x i8> %1 1305} 1306 1307define <vscale x 1 x i8> @test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1308; CHECK-LABEL: test_vluxseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t_nxv1i64: 1309; CHECK: # %bb.0: # %entry 1310; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1311; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 1312; CHECK-NEXT: vmv1r.v v8, v10 1313; CHECK-NEXT: ret 1314entry: 1315 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1316 %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) 1317 ret <vscale x 1 x i8> %1 1318} 1319 1320declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i8>, i64, i64) 1321declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 1322 1323define <vscale x 2 x i8> @test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 1324; CHECK-LABEL: test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i8: 1325; CHECK: # %bb.0: # %entry 1326; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1327; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 1328; CHECK-NEXT: vmv1r.v v8, v10 1329; CHECK-NEXT: ret 1330entry: 1331 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 3) 1332 %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) 1333 ret <vscale x 2 x i8> %1 1334} 1335 1336define <vscale x 2 x i8> @test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1337; CHECK-LABEL: test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i8: 1338; CHECK: # %bb.0: # %entry 1339; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1340; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 1341; CHECK-NEXT: vmv1r.v v8, v10 1342; CHECK-NEXT: ret 1343entry: 1344 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1345 %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) 1346 ret <vscale x 2 x i8> %1 1347} 1348 1349declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i16>, i64, i64) 1350declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 1351 1352define <vscale x 2 x i8> @test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 1353; CHECK-LABEL: test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i16: 1354; CHECK: # %bb.0: # %entry 1355; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1356; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 1357; CHECK-NEXT: vmv1r.v v8, v10 1358; CHECK-NEXT: ret 1359entry: 1360 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 3) 1361 %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) 1362 ret <vscale x 2 x i8> %1 1363} 1364 1365define <vscale x 2 x i8> @test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1366; CHECK-LABEL: test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i16: 1367; CHECK: # %bb.0: # %entry 1368; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1369; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 1370; CHECK-NEXT: vmv1r.v v8, v10 1371; CHECK-NEXT: ret 1372entry: 1373 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1374 %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) 1375 ret <vscale x 2 x i8> %1 1376} 1377 1378declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i32>, i64, i64) 1379declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 1380 1381define <vscale x 2 x i8> @test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 1382; CHECK-LABEL: test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i32: 1383; CHECK: # %bb.0: # %entry 1384; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1385; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 1386; CHECK-NEXT: vmv1r.v v8, v10 1387; CHECK-NEXT: ret 1388entry: 1389 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 3) 1390 %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) 1391 ret <vscale x 2 x i8> %1 1392} 1393 1394define <vscale x 2 x i8> @test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1395; CHECK-LABEL: test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i32: 1396; CHECK: # %bb.0: # %entry 1397; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1398; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 1399; CHECK-NEXT: vmv1r.v v8, v10 1400; CHECK-NEXT: ret 1401entry: 1402 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1403 %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) 1404 ret <vscale x 2 x i8> %1 1405} 1406 1407declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i64>, i64, i64) 1408declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 1409 1410define <vscale x 2 x i8> @test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 1411; CHECK-LABEL: test_vluxseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i64: 1412; CHECK: # %bb.0: # %entry 1413; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1414; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 1415; CHECK-NEXT: vmv1r.v v8, v11 1416; CHECK-NEXT: ret 1417entry: 1418 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 3) 1419 %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) 1420 ret <vscale x 2 x i8> %1 1421} 1422 1423define <vscale x 2 x i8> @test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1424; CHECK-LABEL: test_vluxseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t_nxv2i64: 1425; CHECK: # %bb.0: # %entry 1426; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1427; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 1428; CHECK-NEXT: vmv1r.v v8, v11 1429; CHECK-NEXT: ret 1430entry: 1431 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1432 %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) 1433 ret <vscale x 2 x i8> %1 1434} 1435 1436declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i8>, i64, i64) 1437declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 1438 1439define <vscale x 4 x i8> @test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 1440; CHECK-LABEL: test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i8: 1441; CHECK: # %bb.0: # %entry 1442; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1443; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 1444; CHECK-NEXT: vmv1r.v v8, v10 1445; CHECK-NEXT: ret 1446entry: 1447 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 3) 1448 %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) 1449 ret <vscale x 4 x i8> %1 1450} 1451 1452define <vscale x 4 x i8> @test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 1453; CHECK-LABEL: test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i8: 1454; CHECK: # %bb.0: # %entry 1455; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1456; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 1457; CHECK-NEXT: vmv1r.v v8, v10 1458; CHECK-NEXT: ret 1459entry: 1460 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 1461 %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) 1462 ret <vscale x 4 x i8> %1 1463} 1464 1465declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i16>, i64, i64) 1466declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 1467 1468define <vscale x 4 x i8> @test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 1469; CHECK-LABEL: test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i16: 1470; CHECK: # %bb.0: # %entry 1471; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1472; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 1473; CHECK-NEXT: vmv1r.v v8, v10 1474; CHECK-NEXT: ret 1475entry: 1476 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 3) 1477 %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) 1478 ret <vscale x 4 x i8> %1 1479} 1480 1481define <vscale x 4 x i8> @test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 1482; CHECK-LABEL: test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i16: 1483; CHECK: # %bb.0: # %entry 1484; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1485; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 1486; CHECK-NEXT: vmv1r.v v8, v10 1487; CHECK-NEXT: ret 1488entry: 1489 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 1490 %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) 1491 ret <vscale x 4 x i8> %1 1492} 1493 1494declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i32>, i64, i64) 1495declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 1496 1497define <vscale x 4 x i8> @test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 1498; CHECK-LABEL: test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i32: 1499; CHECK: # %bb.0: # %entry 1500; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1501; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 1502; CHECK-NEXT: vmv1r.v v8, v11 1503; CHECK-NEXT: ret 1504entry: 1505 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 3) 1506 %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) 1507 ret <vscale x 4 x i8> %1 1508} 1509 1510define <vscale x 4 x i8> @test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 1511; CHECK-LABEL: test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i32: 1512; CHECK: # %bb.0: # %entry 1513; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1514; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 1515; CHECK-NEXT: vmv1r.v v8, v11 1516; CHECK-NEXT: ret 1517entry: 1518 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 1519 %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) 1520 ret <vscale x 4 x i8> %1 1521} 1522 1523declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i64>, i64, i64) 1524declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 1525 1526define <vscale x 4 x i8> @test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 1527; CHECK-LABEL: test_vluxseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i64: 1528; CHECK: # %bb.0: # %entry 1529; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1530; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8 1531; CHECK-NEXT: vmv1r.v v8, v13 1532; CHECK-NEXT: ret 1533entry: 1534 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 3) 1535 %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) 1536 ret <vscale x 4 x i8> %1 1537} 1538 1539define <vscale x 4 x i8> @test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 1540; CHECK-LABEL: test_vluxseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t_nxv4i64: 1541; CHECK: # %bb.0: # %entry 1542; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 1543; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8, v0.t 1544; CHECK-NEXT: vmv1r.v v8, v13 1545; CHECK-NEXT: ret 1546entry: 1547 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 1548 %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) 1549 ret <vscale x 4 x i8> %1 1550} 1551 1552declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i8>, i64, i64) 1553declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 1554 1555define <vscale x 8 x i8> @test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 1556; CHECK-LABEL: test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i8: 1557; CHECK: # %bb.0: # %entry 1558; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1559; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 1560; CHECK-NEXT: vmv1r.v v8, v10 1561; CHECK-NEXT: ret 1562entry: 1563 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 3) 1564 %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) 1565 ret <vscale x 8 x i8> %1 1566} 1567 1568define <vscale x 8 x i8> @test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1569; CHECK-LABEL: test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i8: 1570; CHECK: # %bb.0: # %entry 1571; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1572; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 1573; CHECK-NEXT: vmv1r.v v8, v10 1574; CHECK-NEXT: ret 1575entry: 1576 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1577 %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) 1578 ret <vscale x 8 x i8> %1 1579} 1580 1581declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i16>, i64, i64) 1582declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 1583 1584define <vscale x 8 x i8> @test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 1585; CHECK-LABEL: test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i16: 1586; CHECK: # %bb.0: # %entry 1587; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1588; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 1589; CHECK-NEXT: vmv1r.v v8, v11 1590; CHECK-NEXT: ret 1591entry: 1592 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 3) 1593 %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) 1594 ret <vscale x 8 x i8> %1 1595} 1596 1597define <vscale x 8 x i8> @test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1598; CHECK-LABEL: test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i16: 1599; CHECK: # %bb.0: # %entry 1600; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1601; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 1602; CHECK-NEXT: vmv1r.v v8, v11 1603; CHECK-NEXT: ret 1604entry: 1605 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1606 %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) 1607 ret <vscale x 8 x i8> %1 1608} 1609 1610declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i32>, i64, i64) 1611declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 1612 1613define <vscale x 8 x i8> @test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 1614; CHECK-LABEL: test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i32: 1615; CHECK: # %bb.0: # %entry 1616; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1617; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8 1618; CHECK-NEXT: vmv1r.v v8, v13 1619; CHECK-NEXT: ret 1620entry: 1621 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 3) 1622 %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) 1623 ret <vscale x 8 x i8> %1 1624} 1625 1626define <vscale x 8 x i8> @test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1627; CHECK-LABEL: test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i32: 1628; CHECK: # %bb.0: # %entry 1629; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1630; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8, v0.t 1631; CHECK-NEXT: vmv1r.v v8, v13 1632; CHECK-NEXT: ret 1633entry: 1634 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1635 %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) 1636 ret <vscale x 8 x i8> %1 1637} 1638 1639declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i64>, i64, i64) 1640declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 1641 1642define <vscale x 8 x i8> @test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 1643; CHECK-LABEL: test_vluxseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i64: 1644; CHECK: # %bb.0: # %entry 1645; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1646; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8 1647; CHECK-NEXT: vmv1r.v v8, v17 1648; CHECK-NEXT: ret 1649entry: 1650 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 3) 1651 %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) 1652 ret <vscale x 8 x i8> %1 1653} 1654 1655define <vscale x 8 x i8> @test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 1656; CHECK-LABEL: test_vluxseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t_nxv8i64: 1657; CHECK: # %bb.0: # %entry 1658; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 1659; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8, v0.t 1660; CHECK-NEXT: vmv1r.v v8, v17 1661; CHECK-NEXT: ret 1662entry: 1663 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 1664 %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) 1665 ret <vscale x 8 x i8> %1 1666} 1667 1668declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 16 x i8>, i64, i64) 1669declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i8.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i64, i64, i64) 1670 1671define <vscale x 16 x i8> @test_vluxseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl) { 1672; CHECK-LABEL: test_vluxseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i8: 1673; CHECK: # %bb.0: # %entry 1674; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1675; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 1676; CHECK-NEXT: vmv2r.v v8, v12 1677; CHECK-NEXT: ret 1678entry: 1679 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 16 x i8> %index, i64 %vl, i64 3) 1680 %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) 1681 ret <vscale x 16 x i8> %1 1682} 1683 1684define <vscale x 16 x i8> @test_vluxseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl, <vscale x 16 x i1> %mask) { 1685; CHECK-LABEL: test_vluxseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i8: 1686; CHECK: # %bb.0: # %entry 1687; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1688; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 1689; CHECK-NEXT: vmv2r.v v8, v12 1690; CHECK-NEXT: ret 1691entry: 1692 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i1.nxv16i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 1693 %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) 1694 ret <vscale x 16 x i8> %1 1695} 1696 1697declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 16 x i16>, i64, i64) 1698declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i16.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i64, i64, i64) 1699 1700define <vscale x 16 x i8> @test_vluxseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl) { 1701; CHECK-LABEL: test_vluxseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i16: 1702; CHECK: # %bb.0: # %entry 1703; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1704; CHECK-NEXT: vluxseg4ei16.v v12, (a0), v8 1705; CHECK-NEXT: vmv2r.v v8, v14 1706; CHECK-NEXT: ret 1707entry: 1708 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 16 x i16> %index, i64 %vl, i64 3) 1709 %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) 1710 ret <vscale x 16 x i8> %1 1711} 1712 1713define <vscale x 16 x i8> @test_vluxseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl, <vscale x 16 x i1> %mask) { 1714; CHECK-LABEL: test_vluxseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i16: 1715; CHECK: # %bb.0: # %entry 1716; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1717; CHECK-NEXT: vluxseg4ei16.v v12, (a0), v8, v0.t 1718; CHECK-NEXT: vmv2r.v v8, v14 1719; CHECK-NEXT: ret 1720entry: 1721 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i1.nxv16i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 1722 %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) 1723 ret <vscale x 16 x i8> %1 1724} 1725 1726declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 16 x i32>, i64, i64) 1727declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i32.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i64, i64, i64) 1728 1729define <vscale x 16 x i8> @test_vluxseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl) { 1730; CHECK-LABEL: test_vluxseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i32: 1731; CHECK: # %bb.0: # %entry 1732; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1733; CHECK-NEXT: vluxseg4ei32.v v16, (a0), v8 1734; CHECK-NEXT: vmv2r.v v8, v18 1735; CHECK-NEXT: ret 1736entry: 1737 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 16 x i32> %index, i64 %vl, i64 3) 1738 %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) 1739 ret <vscale x 16 x i8> %1 1740} 1741 1742define <vscale x 16 x i8> @test_vluxseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl, <vscale x 16 x i1> %mask) { 1743; CHECK-LABEL: test_vluxseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t_nxv16i32: 1744; CHECK: # %bb.0: # %entry 1745; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 1746; CHECK-NEXT: vluxseg4ei32.v v16, (a0), v8, v0.t 1747; CHECK-NEXT: vmv2r.v v8, v18 1748; CHECK-NEXT: ret 1749entry: 1750 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i1.nxv16i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3) 1751 %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) 1752 ret <vscale x 16 x i8> %1 1753} 1754 1755declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i8>, i64, i64) 1756declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 1757 1758define <vscale x 1 x i8> @test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 1759; CHECK-LABEL: test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i8: 1760; CHECK: # %bb.0: # %entry 1761; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1762; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 1763; CHECK-NEXT: vmv1r.v v8, v10 1764; CHECK-NEXT: ret 1765entry: 1766 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 3) 1767 %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) 1768 ret <vscale x 1 x i8> %1 1769} 1770 1771define <vscale x 1 x i8> @test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1772; CHECK-LABEL: test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i8: 1773; CHECK: # %bb.0: # %entry 1774; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1775; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 1776; CHECK-NEXT: vmv1r.v v8, v10 1777; CHECK-NEXT: ret 1778entry: 1779 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1780 %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) 1781 ret <vscale x 1 x i8> %1 1782} 1783 1784define <vscale x 1 x i8> @test_vluxseg5_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1785; CHECK-LABEL: test_vluxseg5_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i8: 1786; CHECK: # %bb.0: # %entry 1787; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1788; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 1789; CHECK-NEXT: vmv1r.v v8, v10 1790; CHECK-NEXT: ret 1791entry: 1792 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> splat (i1 true), i64 %vl, i64 1, i64 3) 1793 %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) 1794 ret <vscale x 1 x i8> %1 1795} 1796 1797declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i16>, i64, i64) 1798declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 1799 1800define <vscale x 1 x i8> @test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 1801; CHECK-LABEL: test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i16: 1802; CHECK: # %bb.0: # %entry 1803; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1804; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 1805; CHECK-NEXT: vmv1r.v v8, v10 1806; CHECK-NEXT: ret 1807entry: 1808 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 3) 1809 %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) 1810 ret <vscale x 1 x i8> %1 1811} 1812 1813define <vscale x 1 x i8> @test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1814; CHECK-LABEL: test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i16: 1815; CHECK: # %bb.0: # %entry 1816; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1817; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 1818; CHECK-NEXT: vmv1r.v v8, v10 1819; CHECK-NEXT: ret 1820entry: 1821 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1822 %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) 1823 ret <vscale x 1 x i8> %1 1824} 1825 1826declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i32>, i64, i64) 1827declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 1828 1829define <vscale x 1 x i8> @test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 1830; CHECK-LABEL: test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i32: 1831; CHECK: # %bb.0: # %entry 1832; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1833; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 1834; CHECK-NEXT: vmv1r.v v8, v10 1835; CHECK-NEXT: ret 1836entry: 1837 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 3) 1838 %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) 1839 ret <vscale x 1 x i8> %1 1840} 1841 1842define <vscale x 1 x i8> @test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1843; CHECK-LABEL: test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i32: 1844; CHECK: # %bb.0: # %entry 1845; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1846; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 1847; CHECK-NEXT: vmv1r.v v8, v10 1848; CHECK-NEXT: ret 1849entry: 1850 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1851 %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) 1852 ret <vscale x 1 x i8> %1 1853} 1854 1855declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i64>, i64, i64) 1856declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 1857 1858define <vscale x 1 x i8> @test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 1859; CHECK-LABEL: test_vluxseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i64: 1860; CHECK: # %bb.0: # %entry 1861; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1862; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 1863; CHECK-NEXT: vmv1r.v v8, v10 1864; CHECK-NEXT: ret 1865entry: 1866 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv1i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 3) 1867 %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) 1868 ret <vscale x 1 x i8> %1 1869} 1870 1871define <vscale x 1 x i8> @test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 1872; CHECK-LABEL: test_vluxseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t_nxv1i64: 1873; CHECK: # %bb.0: # %entry 1874; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 1875; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 1876; CHECK-NEXT: vmv1r.v v8, v10 1877; CHECK-NEXT: ret 1878entry: 1879 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 1880 %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) 1881 ret <vscale x 1 x i8> %1 1882} 1883 1884declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i8>, i64, i64) 1885declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 1886 1887define <vscale x 2 x i8> @test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 1888; CHECK-LABEL: test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i8: 1889; CHECK: # %bb.0: # %entry 1890; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1891; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 1892; CHECK-NEXT: vmv1r.v v8, v10 1893; CHECK-NEXT: ret 1894entry: 1895 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 3) 1896 %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) 1897 ret <vscale x 2 x i8> %1 1898} 1899 1900define <vscale x 2 x i8> @test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1901; CHECK-LABEL: test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i8: 1902; CHECK: # %bb.0: # %entry 1903; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1904; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 1905; CHECK-NEXT: vmv1r.v v8, v10 1906; CHECK-NEXT: ret 1907entry: 1908 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1909 %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) 1910 ret <vscale x 2 x i8> %1 1911} 1912 1913declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i16>, i64, i64) 1914declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 1915 1916define <vscale x 2 x i8> @test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 1917; CHECK-LABEL: test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i16: 1918; CHECK: # %bb.0: # %entry 1919; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1920; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 1921; CHECK-NEXT: vmv1r.v v8, v10 1922; CHECK-NEXT: ret 1923entry: 1924 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 3) 1925 %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) 1926 ret <vscale x 2 x i8> %1 1927} 1928 1929define <vscale x 2 x i8> @test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1930; CHECK-LABEL: test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i16: 1931; CHECK: # %bb.0: # %entry 1932; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1933; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 1934; CHECK-NEXT: vmv1r.v v8, v10 1935; CHECK-NEXT: ret 1936entry: 1937 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1938 %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) 1939 ret <vscale x 2 x i8> %1 1940} 1941 1942declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i32>, i64, i64) 1943declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 1944 1945define <vscale x 2 x i8> @test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 1946; CHECK-LABEL: test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i32: 1947; CHECK: # %bb.0: # %entry 1948; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1949; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 1950; CHECK-NEXT: vmv1r.v v8, v10 1951; CHECK-NEXT: ret 1952entry: 1953 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 3) 1954 %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) 1955 ret <vscale x 2 x i8> %1 1956} 1957 1958define <vscale x 2 x i8> @test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1959; CHECK-LABEL: test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i32: 1960; CHECK: # %bb.0: # %entry 1961; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1962; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 1963; CHECK-NEXT: vmv1r.v v8, v10 1964; CHECK-NEXT: ret 1965entry: 1966 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1967 %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) 1968 ret <vscale x 2 x i8> %1 1969} 1970 1971declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i64>, i64, i64) 1972declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 1973 1974define <vscale x 2 x i8> @test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 1975; CHECK-LABEL: test_vluxseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i64: 1976; CHECK: # %bb.0: # %entry 1977; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1978; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8 1979; CHECK-NEXT: vmv1r.v v8, v11 1980; CHECK-NEXT: ret 1981entry: 1982 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 3) 1983 %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) 1984 ret <vscale x 2 x i8> %1 1985} 1986 1987define <vscale x 2 x i8> @test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 1988; CHECK-LABEL: test_vluxseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t_nxv2i64: 1989; CHECK: # %bb.0: # %entry 1990; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 1991; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8, v0.t 1992; CHECK-NEXT: vmv1r.v v8, v11 1993; CHECK-NEXT: ret 1994entry: 1995 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 1996 %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) 1997 ret <vscale x 2 x i8> %1 1998} 1999 2000declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i8>, i64, i64) 2001declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 2002 2003define <vscale x 4 x i8> @test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 2004; CHECK-LABEL: test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i8: 2005; CHECK: # %bb.0: # %entry 2006; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2007; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 2008; CHECK-NEXT: vmv1r.v v8, v10 2009; CHECK-NEXT: ret 2010entry: 2011 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 3) 2012 %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) 2013 ret <vscale x 4 x i8> %1 2014} 2015 2016define <vscale x 4 x i8> @test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2017; CHECK-LABEL: test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i8: 2018; CHECK: # %bb.0: # %entry 2019; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2020; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 2021; CHECK-NEXT: vmv1r.v v8, v10 2022; CHECK-NEXT: ret 2023entry: 2024 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2025 %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) 2026 ret <vscale x 4 x i8> %1 2027} 2028 2029declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i16>, i64, i64) 2030declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 2031 2032define <vscale x 4 x i8> @test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 2033; CHECK-LABEL: test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i16: 2034; CHECK: # %bb.0: # %entry 2035; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2036; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 2037; CHECK-NEXT: vmv1r.v v8, v10 2038; CHECK-NEXT: ret 2039entry: 2040 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 3) 2041 %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) 2042 ret <vscale x 4 x i8> %1 2043} 2044 2045define <vscale x 4 x i8> @test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2046; CHECK-LABEL: test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i16: 2047; CHECK: # %bb.0: # %entry 2048; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2049; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 2050; CHECK-NEXT: vmv1r.v v8, v10 2051; CHECK-NEXT: ret 2052entry: 2053 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2054 %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) 2055 ret <vscale x 4 x i8> %1 2056} 2057 2058declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i32>, i64, i64) 2059declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 2060 2061define <vscale x 4 x i8> @test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 2062; CHECK-LABEL: test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i32: 2063; CHECK: # %bb.0: # %entry 2064; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2065; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8 2066; CHECK-NEXT: vmv1r.v v8, v11 2067; CHECK-NEXT: ret 2068entry: 2069 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 3) 2070 %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) 2071 ret <vscale x 4 x i8> %1 2072} 2073 2074define <vscale x 4 x i8> @test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2075; CHECK-LABEL: test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i32: 2076; CHECK: # %bb.0: # %entry 2077; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2078; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8, v0.t 2079; CHECK-NEXT: vmv1r.v v8, v11 2080; CHECK-NEXT: ret 2081entry: 2082 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2083 %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) 2084 ret <vscale x 4 x i8> %1 2085} 2086 2087declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i64>, i64, i64) 2088declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 2089 2090define <vscale x 4 x i8> @test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 2091; CHECK-LABEL: test_vluxseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i64: 2092; CHECK: # %bb.0: # %entry 2093; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2094; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8 2095; CHECK-NEXT: vmv1r.v v8, v13 2096; CHECK-NEXT: ret 2097entry: 2098 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 3) 2099 %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) 2100 ret <vscale x 4 x i8> %1 2101} 2102 2103define <vscale x 4 x i8> @test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2104; CHECK-LABEL: test_vluxseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t_nxv4i64: 2105; CHECK: # %bb.0: # %entry 2106; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2107; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8, v0.t 2108; CHECK-NEXT: vmv1r.v v8, v13 2109; CHECK-NEXT: ret 2110entry: 2111 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2112 %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) 2113 ret <vscale x 4 x i8> %1 2114} 2115 2116declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i8>, i64, i64) 2117declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 2118 2119define <vscale x 8 x i8> @test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 2120; CHECK-LABEL: test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i8: 2121; CHECK: # %bb.0: # %entry 2122; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2123; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 2124; CHECK-NEXT: vmv1r.v v8, v10 2125; CHECK-NEXT: ret 2126entry: 2127 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 3) 2128 %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) 2129 ret <vscale x 8 x i8> %1 2130} 2131 2132define <vscale x 8 x i8> @test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2133; CHECK-LABEL: test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i8: 2134; CHECK: # %bb.0: # %entry 2135; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2136; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 2137; CHECK-NEXT: vmv1r.v v8, v10 2138; CHECK-NEXT: ret 2139entry: 2140 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2141 %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) 2142 ret <vscale x 8 x i8> %1 2143} 2144 2145declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i16>, i64, i64) 2146declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 2147 2148define <vscale x 8 x i8> @test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 2149; CHECK-LABEL: test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i16: 2150; CHECK: # %bb.0: # %entry 2151; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2152; CHECK-NEXT: vluxseg5ei16.v v10, (a0), v8 2153; CHECK-NEXT: vmv1r.v v8, v11 2154; CHECK-NEXT: ret 2155entry: 2156 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 3) 2157 %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) 2158 ret <vscale x 8 x i8> %1 2159} 2160 2161define <vscale x 8 x i8> @test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2162; CHECK-LABEL: test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i16: 2163; CHECK: # %bb.0: # %entry 2164; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2165; CHECK-NEXT: vluxseg5ei16.v v10, (a0), v8, v0.t 2166; CHECK-NEXT: vmv1r.v v8, v11 2167; CHECK-NEXT: ret 2168entry: 2169 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2170 %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) 2171 ret <vscale x 8 x i8> %1 2172} 2173 2174declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i32>, i64, i64) 2175declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 2176 2177define <vscale x 8 x i8> @test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 2178; CHECK-LABEL: test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i32: 2179; CHECK: # %bb.0: # %entry 2180; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2181; CHECK-NEXT: vluxseg5ei32.v v12, (a0), v8 2182; CHECK-NEXT: vmv1r.v v8, v13 2183; CHECK-NEXT: ret 2184entry: 2185 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 3) 2186 %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) 2187 ret <vscale x 8 x i8> %1 2188} 2189 2190define <vscale x 8 x i8> @test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2191; CHECK-LABEL: test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i32: 2192; CHECK: # %bb.0: # %entry 2193; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2194; CHECK-NEXT: vluxseg5ei32.v v12, (a0), v8, v0.t 2195; CHECK-NEXT: vmv1r.v v8, v13 2196; CHECK-NEXT: ret 2197entry: 2198 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2199 %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) 2200 ret <vscale x 8 x i8> %1 2201} 2202 2203declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i64>, i64, i64) 2204declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 2205 2206define <vscale x 8 x i8> @test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 2207; CHECK-LABEL: test_vluxseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i64: 2208; CHECK: # %bb.0: # %entry 2209; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2210; CHECK-NEXT: vluxseg5ei64.v v16, (a0), v8 2211; CHECK-NEXT: vmv1r.v v8, v17 2212; CHECK-NEXT: ret 2213entry: 2214 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 3) 2215 %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) 2216 ret <vscale x 8 x i8> %1 2217} 2218 2219define <vscale x 8 x i8> @test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2220; CHECK-LABEL: test_vluxseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t_nxv8i64: 2221; CHECK: # %bb.0: # %entry 2222; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2223; CHECK-NEXT: vluxseg5ei64.v v16, (a0), v8, v0.t 2224; CHECK-NEXT: vmv1r.v v8, v17 2225; CHECK-NEXT: ret 2226entry: 2227 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2228 %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) 2229 ret <vscale x 8 x i8> %1 2230} 2231 2232declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i8>, i64, i64) 2233declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 2234 2235define <vscale x 1 x i8> @test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 2236; CHECK-LABEL: test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i8: 2237; CHECK: # %bb.0: # %entry 2238; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2239; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 2240; CHECK-NEXT: vmv1r.v v8, v10 2241; CHECK-NEXT: ret 2242entry: 2243 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 3) 2244 %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) 2245 ret <vscale x 1 x i8> %1 2246} 2247 2248define <vscale x 1 x i8> @test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2249; CHECK-LABEL: test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i8: 2250; CHECK: # %bb.0: # %entry 2251; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2252; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 2253; CHECK-NEXT: vmv1r.v v8, v10 2254; CHECK-NEXT: ret 2255entry: 2256 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2257 %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) 2258 ret <vscale x 1 x i8> %1 2259} 2260 2261define <vscale x 1 x i8> @test_vluxseg6_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2262; CHECK-LABEL: test_vluxseg6_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i8: 2263; CHECK: # %bb.0: # %entry 2264; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2265; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 2266; CHECK-NEXT: vmv1r.v v8, v10 2267; CHECK-NEXT: ret 2268entry: 2269 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> splat (i1 true), i64 %vl, i64 1, i64 3) 2270 %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) 2271 ret <vscale x 1 x i8> %1 2272} 2273 2274declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i16>, i64, i64) 2275declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 2276 2277define <vscale x 1 x i8> @test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 2278; CHECK-LABEL: test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i16: 2279; CHECK: # %bb.0: # %entry 2280; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2281; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 2282; CHECK-NEXT: vmv1r.v v8, v10 2283; CHECK-NEXT: ret 2284entry: 2285 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 3) 2286 %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) 2287 ret <vscale x 1 x i8> %1 2288} 2289 2290define <vscale x 1 x i8> @test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2291; CHECK-LABEL: test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i16: 2292; CHECK: # %bb.0: # %entry 2293; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2294; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 2295; CHECK-NEXT: vmv1r.v v8, v10 2296; CHECK-NEXT: ret 2297entry: 2298 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2299 %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) 2300 ret <vscale x 1 x i8> %1 2301} 2302 2303declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i32>, i64, i64) 2304declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 2305 2306define <vscale x 1 x i8> @test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 2307; CHECK-LABEL: test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i32: 2308; CHECK: # %bb.0: # %entry 2309; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2310; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 2311; CHECK-NEXT: vmv1r.v v8, v10 2312; CHECK-NEXT: ret 2313entry: 2314 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 3) 2315 %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) 2316 ret <vscale x 1 x i8> %1 2317} 2318 2319define <vscale x 1 x i8> @test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2320; CHECK-LABEL: test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i32: 2321; CHECK: # %bb.0: # %entry 2322; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2323; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 2324; CHECK-NEXT: vmv1r.v v8, v10 2325; CHECK-NEXT: ret 2326entry: 2327 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2328 %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) 2329 ret <vscale x 1 x i8> %1 2330} 2331 2332declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i64>, i64, i64) 2333declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 2334 2335define <vscale x 1 x i8> @test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 2336; CHECK-LABEL: test_vluxseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i64: 2337; CHECK: # %bb.0: # %entry 2338; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2339; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 2340; CHECK-NEXT: vmv1r.v v8, v10 2341; CHECK-NEXT: ret 2342entry: 2343 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv1i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 3) 2344 %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) 2345 ret <vscale x 1 x i8> %1 2346} 2347 2348define <vscale x 1 x i8> @test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2349; CHECK-LABEL: test_vluxseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t_nxv1i64: 2350; CHECK: # %bb.0: # %entry 2351; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2352; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 2353; CHECK-NEXT: vmv1r.v v8, v10 2354; CHECK-NEXT: ret 2355entry: 2356 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2357 %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) 2358 ret <vscale x 1 x i8> %1 2359} 2360 2361declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i8>, i64, i64) 2362declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 2363 2364define <vscale x 2 x i8> @test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 2365; CHECK-LABEL: test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i8: 2366; CHECK: # %bb.0: # %entry 2367; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2368; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 2369; CHECK-NEXT: vmv1r.v v8, v10 2370; CHECK-NEXT: ret 2371entry: 2372 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 3) 2373 %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) 2374 ret <vscale x 2 x i8> %1 2375} 2376 2377define <vscale x 2 x i8> @test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2378; CHECK-LABEL: test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i8: 2379; CHECK: # %bb.0: # %entry 2380; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2381; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 2382; CHECK-NEXT: vmv1r.v v8, v10 2383; CHECK-NEXT: ret 2384entry: 2385 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2386 %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) 2387 ret <vscale x 2 x i8> %1 2388} 2389 2390declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i16>, i64, i64) 2391declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 2392 2393define <vscale x 2 x i8> @test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 2394; CHECK-LABEL: test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i16: 2395; CHECK: # %bb.0: # %entry 2396; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2397; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 2398; CHECK-NEXT: vmv1r.v v8, v10 2399; CHECK-NEXT: ret 2400entry: 2401 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 3) 2402 %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) 2403 ret <vscale x 2 x i8> %1 2404} 2405 2406define <vscale x 2 x i8> @test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2407; CHECK-LABEL: test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i16: 2408; CHECK: # %bb.0: # %entry 2409; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2410; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 2411; CHECK-NEXT: vmv1r.v v8, v10 2412; CHECK-NEXT: ret 2413entry: 2414 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2415 %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) 2416 ret <vscale x 2 x i8> %1 2417} 2418 2419declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i32>, i64, i64) 2420declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 2421 2422define <vscale x 2 x i8> @test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 2423; CHECK-LABEL: test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i32: 2424; CHECK: # %bb.0: # %entry 2425; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2426; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 2427; CHECK-NEXT: vmv1r.v v8, v10 2428; CHECK-NEXT: ret 2429entry: 2430 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 3) 2431 %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) 2432 ret <vscale x 2 x i8> %1 2433} 2434 2435define <vscale x 2 x i8> @test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2436; CHECK-LABEL: test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i32: 2437; CHECK: # %bb.0: # %entry 2438; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2439; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 2440; CHECK-NEXT: vmv1r.v v8, v10 2441; CHECK-NEXT: ret 2442entry: 2443 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2444 %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) 2445 ret <vscale x 2 x i8> %1 2446} 2447 2448declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i64>, i64, i64) 2449declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 2450 2451define <vscale x 2 x i8> @test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 2452; CHECK-LABEL: test_vluxseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i64: 2453; CHECK: # %bb.0: # %entry 2454; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2455; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8 2456; CHECK-NEXT: vmv1r.v v8, v11 2457; CHECK-NEXT: ret 2458entry: 2459 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 3) 2460 %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) 2461 ret <vscale x 2 x i8> %1 2462} 2463 2464define <vscale x 2 x i8> @test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2465; CHECK-LABEL: test_vluxseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t_nxv2i64: 2466; CHECK: # %bb.0: # %entry 2467; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2468; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8, v0.t 2469; CHECK-NEXT: vmv1r.v v8, v11 2470; CHECK-NEXT: ret 2471entry: 2472 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2473 %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) 2474 ret <vscale x 2 x i8> %1 2475} 2476 2477declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i8>, i64, i64) 2478declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 2479 2480define <vscale x 4 x i8> @test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 2481; CHECK-LABEL: test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i8: 2482; CHECK: # %bb.0: # %entry 2483; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2484; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 2485; CHECK-NEXT: vmv1r.v v8, v10 2486; CHECK-NEXT: ret 2487entry: 2488 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 3) 2489 %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) 2490 ret <vscale x 4 x i8> %1 2491} 2492 2493define <vscale x 4 x i8> @test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2494; CHECK-LABEL: test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i8: 2495; CHECK: # %bb.0: # %entry 2496; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2497; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 2498; CHECK-NEXT: vmv1r.v v8, v10 2499; CHECK-NEXT: ret 2500entry: 2501 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2502 %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) 2503 ret <vscale x 4 x i8> %1 2504} 2505 2506declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i16>, i64, i64) 2507declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 2508 2509define <vscale x 4 x i8> @test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 2510; CHECK-LABEL: test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i16: 2511; CHECK: # %bb.0: # %entry 2512; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2513; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 2514; CHECK-NEXT: vmv1r.v v8, v10 2515; CHECK-NEXT: ret 2516entry: 2517 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 3) 2518 %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) 2519 ret <vscale x 4 x i8> %1 2520} 2521 2522define <vscale x 4 x i8> @test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2523; CHECK-LABEL: test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i16: 2524; CHECK: # %bb.0: # %entry 2525; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2526; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 2527; CHECK-NEXT: vmv1r.v v8, v10 2528; CHECK-NEXT: ret 2529entry: 2530 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2531 %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) 2532 ret <vscale x 4 x i8> %1 2533} 2534 2535declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i32>, i64, i64) 2536declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 2537 2538define <vscale x 4 x i8> @test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 2539; CHECK-LABEL: test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i32: 2540; CHECK: # %bb.0: # %entry 2541; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2542; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8 2543; CHECK-NEXT: vmv1r.v v8, v11 2544; CHECK-NEXT: ret 2545entry: 2546 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 3) 2547 %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) 2548 ret <vscale x 4 x i8> %1 2549} 2550 2551define <vscale x 4 x i8> @test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2552; CHECK-LABEL: test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i32: 2553; CHECK: # %bb.0: # %entry 2554; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2555; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8, v0.t 2556; CHECK-NEXT: vmv1r.v v8, v11 2557; CHECK-NEXT: ret 2558entry: 2559 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2560 %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) 2561 ret <vscale x 4 x i8> %1 2562} 2563 2564declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i64>, i64, i64) 2565declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 2566 2567define <vscale x 4 x i8> @test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 2568; CHECK-LABEL: test_vluxseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i64: 2569; CHECK: # %bb.0: # %entry 2570; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2571; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8 2572; CHECK-NEXT: vmv1r.v v8, v13 2573; CHECK-NEXT: ret 2574entry: 2575 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 3) 2576 %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) 2577 ret <vscale x 4 x i8> %1 2578} 2579 2580define <vscale x 4 x i8> @test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2581; CHECK-LABEL: test_vluxseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t_nxv4i64: 2582; CHECK: # %bb.0: # %entry 2583; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2584; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8, v0.t 2585; CHECK-NEXT: vmv1r.v v8, v13 2586; CHECK-NEXT: ret 2587entry: 2588 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2589 %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) 2590 ret <vscale x 4 x i8> %1 2591} 2592 2593declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i8>, i64, i64) 2594declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 2595 2596define <vscale x 8 x i8> @test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 2597; CHECK-LABEL: test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i8: 2598; CHECK: # %bb.0: # %entry 2599; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2600; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 2601; CHECK-NEXT: vmv1r.v v8, v10 2602; CHECK-NEXT: ret 2603entry: 2604 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 3) 2605 %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) 2606 ret <vscale x 8 x i8> %1 2607} 2608 2609define <vscale x 8 x i8> @test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2610; CHECK-LABEL: test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i8: 2611; CHECK: # %bb.0: # %entry 2612; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2613; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 2614; CHECK-NEXT: vmv1r.v v8, v10 2615; CHECK-NEXT: ret 2616entry: 2617 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2618 %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) 2619 ret <vscale x 8 x i8> %1 2620} 2621 2622declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i16>, i64, i64) 2623declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 2624 2625define <vscale x 8 x i8> @test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 2626; CHECK-LABEL: test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i16: 2627; CHECK: # %bb.0: # %entry 2628; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2629; CHECK-NEXT: vluxseg6ei16.v v10, (a0), v8 2630; CHECK-NEXT: vmv1r.v v8, v11 2631; CHECK-NEXT: ret 2632entry: 2633 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 3) 2634 %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) 2635 ret <vscale x 8 x i8> %1 2636} 2637 2638define <vscale x 8 x i8> @test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2639; CHECK-LABEL: test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i16: 2640; CHECK: # %bb.0: # %entry 2641; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2642; CHECK-NEXT: vluxseg6ei16.v v10, (a0), v8, v0.t 2643; CHECK-NEXT: vmv1r.v v8, v11 2644; CHECK-NEXT: ret 2645entry: 2646 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2647 %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) 2648 ret <vscale x 8 x i8> %1 2649} 2650 2651declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i32>, i64, i64) 2652declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 2653 2654define <vscale x 8 x i8> @test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 2655; CHECK-LABEL: test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i32: 2656; CHECK: # %bb.0: # %entry 2657; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2658; CHECK-NEXT: vluxseg6ei32.v v12, (a0), v8 2659; CHECK-NEXT: vmv1r.v v8, v13 2660; CHECK-NEXT: ret 2661entry: 2662 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 3) 2663 %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) 2664 ret <vscale x 8 x i8> %1 2665} 2666 2667define <vscale x 8 x i8> @test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2668; CHECK-LABEL: test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i32: 2669; CHECK: # %bb.0: # %entry 2670; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2671; CHECK-NEXT: vluxseg6ei32.v v12, (a0), v8, v0.t 2672; CHECK-NEXT: vmv1r.v v8, v13 2673; CHECK-NEXT: ret 2674entry: 2675 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2676 %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) 2677 ret <vscale x 8 x i8> %1 2678} 2679 2680declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i64>, i64, i64) 2681declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 2682 2683define <vscale x 8 x i8> @test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 2684; CHECK-LABEL: test_vluxseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i64: 2685; CHECK: # %bb.0: # %entry 2686; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2687; CHECK-NEXT: vluxseg6ei64.v v16, (a0), v8 2688; CHECK-NEXT: vmv1r.v v8, v17 2689; CHECK-NEXT: ret 2690entry: 2691 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 3) 2692 %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) 2693 ret <vscale x 8 x i8> %1 2694} 2695 2696define <vscale x 8 x i8> @test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 2697; CHECK-LABEL: test_vluxseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t_nxv8i64: 2698; CHECK: # %bb.0: # %entry 2699; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 2700; CHECK-NEXT: vluxseg6ei64.v v16, (a0), v8, v0.t 2701; CHECK-NEXT: vmv1r.v v8, v17 2702; CHECK-NEXT: ret 2703entry: 2704 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 2705 %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) 2706 ret <vscale x 8 x i8> %1 2707} 2708 2709declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i8>, i64, i64) 2710declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 2711 2712define <vscale x 1 x i8> @test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 2713; CHECK-LABEL: test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i8: 2714; CHECK: # %bb.0: # %entry 2715; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2716; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 2717; CHECK-NEXT: vmv1r.v v8, v10 2718; CHECK-NEXT: ret 2719entry: 2720 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 3) 2721 %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) 2722 ret <vscale x 1 x i8> %1 2723} 2724 2725define <vscale x 1 x i8> @test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2726; CHECK-LABEL: test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i8: 2727; CHECK: # %bb.0: # %entry 2728; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2729; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 2730; CHECK-NEXT: vmv1r.v v8, v10 2731; CHECK-NEXT: ret 2732entry: 2733 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2734 %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) 2735 ret <vscale x 1 x i8> %1 2736} 2737 2738define <vscale x 1 x i8> @test_vluxseg7_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2739; CHECK-LABEL: test_vluxseg7_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i8: 2740; CHECK: # %bb.0: # %entry 2741; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2742; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 2743; CHECK-NEXT: vmv1r.v v8, v10 2744; CHECK-NEXT: ret 2745entry: 2746 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> splat (i1 true), i64 %vl, i64 1, i64 3) 2747 %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) 2748 ret <vscale x 1 x i8> %1 2749} 2750 2751declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i16>, i64, i64) 2752declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 2753 2754define <vscale x 1 x i8> @test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 2755; CHECK-LABEL: test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i16: 2756; CHECK: # %bb.0: # %entry 2757; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2758; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 2759; CHECK-NEXT: vmv1r.v v8, v10 2760; CHECK-NEXT: ret 2761entry: 2762 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 3) 2763 %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) 2764 ret <vscale x 1 x i8> %1 2765} 2766 2767define <vscale x 1 x i8> @test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2768; CHECK-LABEL: test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i16: 2769; CHECK: # %bb.0: # %entry 2770; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2771; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 2772; CHECK-NEXT: vmv1r.v v8, v10 2773; CHECK-NEXT: ret 2774entry: 2775 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2776 %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) 2777 ret <vscale x 1 x i8> %1 2778} 2779 2780declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i32>, i64, i64) 2781declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 2782 2783define <vscale x 1 x i8> @test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 2784; CHECK-LABEL: test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i32: 2785; CHECK: # %bb.0: # %entry 2786; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2787; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 2788; CHECK-NEXT: vmv1r.v v8, v10 2789; CHECK-NEXT: ret 2790entry: 2791 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 3) 2792 %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) 2793 ret <vscale x 1 x i8> %1 2794} 2795 2796define <vscale x 1 x i8> @test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2797; CHECK-LABEL: test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i32: 2798; CHECK: # %bb.0: # %entry 2799; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2800; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 2801; CHECK-NEXT: vmv1r.v v8, v10 2802; CHECK-NEXT: ret 2803entry: 2804 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2805 %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) 2806 ret <vscale x 1 x i8> %1 2807} 2808 2809declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i64>, i64, i64) 2810declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 2811 2812define <vscale x 1 x i8> @test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 2813; CHECK-LABEL: test_vluxseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i64: 2814; CHECK: # %bb.0: # %entry 2815; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2816; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 2817; CHECK-NEXT: vmv1r.v v8, v10 2818; CHECK-NEXT: ret 2819entry: 2820 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv1i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 3) 2821 %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) 2822 ret <vscale x 1 x i8> %1 2823} 2824 2825define <vscale x 1 x i8> @test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 2826; CHECK-LABEL: test_vluxseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t_nxv1i64: 2827; CHECK: # %bb.0: # %entry 2828; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 2829; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 2830; CHECK-NEXT: vmv1r.v v8, v10 2831; CHECK-NEXT: ret 2832entry: 2833 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 2834 %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) 2835 ret <vscale x 1 x i8> %1 2836} 2837 2838declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i8>, i64, i64) 2839declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 2840 2841define <vscale x 2 x i8> @test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 2842; CHECK-LABEL: test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i8: 2843; CHECK: # %bb.0: # %entry 2844; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2845; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 2846; CHECK-NEXT: vmv1r.v v8, v10 2847; CHECK-NEXT: ret 2848entry: 2849 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 3) 2850 %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) 2851 ret <vscale x 2 x i8> %1 2852} 2853 2854define <vscale x 2 x i8> @test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2855; CHECK-LABEL: test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i8: 2856; CHECK: # %bb.0: # %entry 2857; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2858; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 2859; CHECK-NEXT: vmv1r.v v8, v10 2860; CHECK-NEXT: ret 2861entry: 2862 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2863 %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) 2864 ret <vscale x 2 x i8> %1 2865} 2866 2867declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i16>, i64, i64) 2868declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 2869 2870define <vscale x 2 x i8> @test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 2871; CHECK-LABEL: test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i16: 2872; CHECK: # %bb.0: # %entry 2873; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2874; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 2875; CHECK-NEXT: vmv1r.v v8, v10 2876; CHECK-NEXT: ret 2877entry: 2878 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 3) 2879 %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) 2880 ret <vscale x 2 x i8> %1 2881} 2882 2883define <vscale x 2 x i8> @test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2884; CHECK-LABEL: test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i16: 2885; CHECK: # %bb.0: # %entry 2886; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2887; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 2888; CHECK-NEXT: vmv1r.v v8, v10 2889; CHECK-NEXT: ret 2890entry: 2891 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2892 %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) 2893 ret <vscale x 2 x i8> %1 2894} 2895 2896declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i32>, i64, i64) 2897declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 2898 2899define <vscale x 2 x i8> @test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 2900; CHECK-LABEL: test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i32: 2901; CHECK: # %bb.0: # %entry 2902; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2903; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 2904; CHECK-NEXT: vmv1r.v v8, v10 2905; CHECK-NEXT: ret 2906entry: 2907 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 3) 2908 %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) 2909 ret <vscale x 2 x i8> %1 2910} 2911 2912define <vscale x 2 x i8> @test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2913; CHECK-LABEL: test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i32: 2914; CHECK: # %bb.0: # %entry 2915; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2916; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 2917; CHECK-NEXT: vmv1r.v v8, v10 2918; CHECK-NEXT: ret 2919entry: 2920 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2921 %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) 2922 ret <vscale x 2 x i8> %1 2923} 2924 2925declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i64>, i64, i64) 2926declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 2927 2928define <vscale x 2 x i8> @test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 2929; CHECK-LABEL: test_vluxseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i64: 2930; CHECK: # %bb.0: # %entry 2931; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2932; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8 2933; CHECK-NEXT: vmv1r.v v8, v11 2934; CHECK-NEXT: ret 2935entry: 2936 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 3) 2937 %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) 2938 ret <vscale x 2 x i8> %1 2939} 2940 2941define <vscale x 2 x i8> @test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 2942; CHECK-LABEL: test_vluxseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t_nxv2i64: 2943; CHECK: # %bb.0: # %entry 2944; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 2945; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8, v0.t 2946; CHECK-NEXT: vmv1r.v v8, v11 2947; CHECK-NEXT: ret 2948entry: 2949 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 2950 %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) 2951 ret <vscale x 2 x i8> %1 2952} 2953 2954declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i8>, i64, i64) 2955declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 2956 2957define <vscale x 4 x i8> @test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 2958; CHECK-LABEL: test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i8: 2959; CHECK: # %bb.0: # %entry 2960; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2961; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 2962; CHECK-NEXT: vmv1r.v v8, v10 2963; CHECK-NEXT: ret 2964entry: 2965 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 3) 2966 %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) 2967 ret <vscale x 4 x i8> %1 2968} 2969 2970define <vscale x 4 x i8> @test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 2971; CHECK-LABEL: test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i8: 2972; CHECK: # %bb.0: # %entry 2973; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2974; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 2975; CHECK-NEXT: vmv1r.v v8, v10 2976; CHECK-NEXT: ret 2977entry: 2978 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 2979 %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) 2980 ret <vscale x 4 x i8> %1 2981} 2982 2983declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i16>, i64, i64) 2984declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 2985 2986define <vscale x 4 x i8> @test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 2987; CHECK-LABEL: test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i16: 2988; CHECK: # %bb.0: # %entry 2989; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 2990; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 2991; CHECK-NEXT: vmv1r.v v8, v10 2992; CHECK-NEXT: ret 2993entry: 2994 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 3) 2995 %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) 2996 ret <vscale x 4 x i8> %1 2997} 2998 2999define <vscale x 4 x i8> @test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3000; CHECK-LABEL: test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i16: 3001; CHECK: # %bb.0: # %entry 3002; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3003; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 3004; CHECK-NEXT: vmv1r.v v8, v10 3005; CHECK-NEXT: ret 3006entry: 3007 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 3008 %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) 3009 ret <vscale x 4 x i8> %1 3010} 3011 3012declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i32>, i64, i64) 3013declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 3014 3015define <vscale x 4 x i8> @test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 3016; CHECK-LABEL: test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i32: 3017; CHECK: # %bb.0: # %entry 3018; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3019; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8 3020; CHECK-NEXT: vmv1r.v v8, v11 3021; CHECK-NEXT: ret 3022entry: 3023 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 3) 3024 %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) 3025 ret <vscale x 4 x i8> %1 3026} 3027 3028define <vscale x 4 x i8> @test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3029; CHECK-LABEL: test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i32: 3030; CHECK: # %bb.0: # %entry 3031; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3032; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8, v0.t 3033; CHECK-NEXT: vmv1r.v v8, v11 3034; CHECK-NEXT: ret 3035entry: 3036 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 3037 %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) 3038 ret <vscale x 4 x i8> %1 3039} 3040 3041declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i64>, i64, i64) 3042declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 3043 3044define <vscale x 4 x i8> @test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 3045; CHECK-LABEL: test_vluxseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i64: 3046; CHECK: # %bb.0: # %entry 3047; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3048; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8 3049; CHECK-NEXT: vmv1r.v v8, v13 3050; CHECK-NEXT: ret 3051entry: 3052 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 3) 3053 %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) 3054 ret <vscale x 4 x i8> %1 3055} 3056 3057define <vscale x 4 x i8> @test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3058; CHECK-LABEL: test_vluxseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t_nxv4i64: 3059; CHECK: # %bb.0: # %entry 3060; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3061; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8, v0.t 3062; CHECK-NEXT: vmv1r.v v8, v13 3063; CHECK-NEXT: ret 3064entry: 3065 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 3066 %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) 3067 ret <vscale x 4 x i8> %1 3068} 3069 3070declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i8>, i64, i64) 3071declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 3072 3073define <vscale x 8 x i8> @test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 3074; CHECK-LABEL: test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i8: 3075; CHECK: # %bb.0: # %entry 3076; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3077; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 3078; CHECK-NEXT: vmv1r.v v8, v10 3079; CHECK-NEXT: ret 3080entry: 3081 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 3) 3082 %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) 3083 ret <vscale x 8 x i8> %1 3084} 3085 3086define <vscale x 8 x i8> @test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3087; CHECK-LABEL: test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i8: 3088; CHECK: # %bb.0: # %entry 3089; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3090; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 3091; CHECK-NEXT: vmv1r.v v8, v10 3092; CHECK-NEXT: ret 3093entry: 3094 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3095 %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) 3096 ret <vscale x 8 x i8> %1 3097} 3098 3099declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i16>, i64, i64) 3100declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 3101 3102define <vscale x 8 x i8> @test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 3103; CHECK-LABEL: test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i16: 3104; CHECK: # %bb.0: # %entry 3105; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3106; CHECK-NEXT: vluxseg7ei16.v v10, (a0), v8 3107; CHECK-NEXT: vmv1r.v v8, v11 3108; CHECK-NEXT: ret 3109entry: 3110 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 3) 3111 %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) 3112 ret <vscale x 8 x i8> %1 3113} 3114 3115define <vscale x 8 x i8> @test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3116; CHECK-LABEL: test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i16: 3117; CHECK: # %bb.0: # %entry 3118; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3119; CHECK-NEXT: vluxseg7ei16.v v10, (a0), v8, v0.t 3120; CHECK-NEXT: vmv1r.v v8, v11 3121; CHECK-NEXT: ret 3122entry: 3123 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3124 %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) 3125 ret <vscale x 8 x i8> %1 3126} 3127 3128declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i32>, i64, i64) 3129declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 3130 3131define <vscale x 8 x i8> @test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 3132; CHECK-LABEL: test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i32: 3133; CHECK: # %bb.0: # %entry 3134; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3135; CHECK-NEXT: vluxseg7ei32.v v12, (a0), v8 3136; CHECK-NEXT: vmv1r.v v8, v13 3137; CHECK-NEXT: ret 3138entry: 3139 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 3) 3140 %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) 3141 ret <vscale x 8 x i8> %1 3142} 3143 3144define <vscale x 8 x i8> @test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3145; CHECK-LABEL: test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i32: 3146; CHECK: # %bb.0: # %entry 3147; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3148; CHECK-NEXT: vluxseg7ei32.v v12, (a0), v8, v0.t 3149; CHECK-NEXT: vmv1r.v v8, v13 3150; CHECK-NEXT: ret 3151entry: 3152 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3153 %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) 3154 ret <vscale x 8 x i8> %1 3155} 3156 3157declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i64>, i64, i64) 3158declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 3159 3160define <vscale x 8 x i8> @test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 3161; CHECK-LABEL: test_vluxseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i64: 3162; CHECK: # %bb.0: # %entry 3163; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3164; CHECK-NEXT: vluxseg7ei64.v v16, (a0), v8 3165; CHECK-NEXT: vmv1r.v v8, v17 3166; CHECK-NEXT: ret 3167entry: 3168 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 3) 3169 %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) 3170 ret <vscale x 8 x i8> %1 3171} 3172 3173define <vscale x 8 x i8> @test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3174; CHECK-LABEL: test_vluxseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t_nxv8i64: 3175; CHECK: # %bb.0: # %entry 3176; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3177; CHECK-NEXT: vluxseg7ei64.v v16, (a0), v8, v0.t 3178; CHECK-NEXT: vmv1r.v v8, v17 3179; CHECK-NEXT: ret 3180entry: 3181 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3182 %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) 3183 ret <vscale x 8 x i8> %1 3184} 3185 3186declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i8>, i64, i64) 3187declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 3188 3189define <vscale x 1 x i8> @test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 3190; CHECK-LABEL: test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i8: 3191; CHECK: # %bb.0: # %entry 3192; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3193; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 3194; CHECK-NEXT: vmv1r.v v8, v10 3195; CHECK-NEXT: ret 3196entry: 3197 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 3) 3198 %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) 3199 ret <vscale x 1 x i8> %1 3200} 3201 3202define <vscale x 1 x i8> @test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3203; CHECK-LABEL: test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i8: 3204; CHECK: # %bb.0: # %entry 3205; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3206; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 3207; CHECK-NEXT: vmv1r.v v8, v10 3208; CHECK-NEXT: ret 3209entry: 3210 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 3211 %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) 3212 ret <vscale x 1 x i8> %1 3213} 3214 3215define <vscale x 1 x i8> @test_vluxseg8_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3216; CHECK-LABEL: test_vluxseg8_allonesmask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i8: 3217; CHECK: # %bb.0: # %entry 3218; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3219; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 3220; CHECK-NEXT: vmv1r.v v8, v10 3221; CHECK-NEXT: ret 3222entry: 3223 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> splat (i1 true), i64 %vl, i64 1, i64 3) 3224 %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) 3225 ret <vscale x 1 x i8> %1 3226} 3227 3228declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i16>, i64, i64) 3229declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 3230 3231define <vscale x 1 x i8> @test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 3232; CHECK-LABEL: test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i16: 3233; CHECK: # %bb.0: # %entry 3234; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3235; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 3236; CHECK-NEXT: vmv1r.v v8, v10 3237; CHECK-NEXT: ret 3238entry: 3239 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 3) 3240 %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) 3241 ret <vscale x 1 x i8> %1 3242} 3243 3244define <vscale x 1 x i8> @test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3245; CHECK-LABEL: test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i16: 3246; CHECK: # %bb.0: # %entry 3247; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3248; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 3249; CHECK-NEXT: vmv1r.v v8, v10 3250; CHECK-NEXT: ret 3251entry: 3252 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 3253 %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) 3254 ret <vscale x 1 x i8> %1 3255} 3256 3257declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i32>, i64, i64) 3258declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 3259 3260define <vscale x 1 x i8> @test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 3261; CHECK-LABEL: test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i32: 3262; CHECK: # %bb.0: # %entry 3263; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3264; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 3265; CHECK-NEXT: vmv1r.v v8, v10 3266; CHECK-NEXT: ret 3267entry: 3268 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 3) 3269 %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) 3270 ret <vscale x 1 x i8> %1 3271} 3272 3273define <vscale x 1 x i8> @test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3274; CHECK-LABEL: test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i32: 3275; CHECK: # %bb.0: # %entry 3276; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3277; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 3278; CHECK-NEXT: vmv1r.v v8, v10 3279; CHECK-NEXT: ret 3280entry: 3281 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 3282 %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) 3283 ret <vscale x 1 x i8> %1 3284} 3285 3286declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i64>, i64, i64) 3287declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 3288 3289define <vscale x 1 x i8> @test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 3290; CHECK-LABEL: test_vluxseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i64: 3291; CHECK: # %bb.0: # %entry 3292; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3293; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 3294; CHECK-NEXT: vmv1r.v v8, v10 3295; CHECK-NEXT: ret 3296entry: 3297 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv1i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 3) 3298 %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) 3299 ret <vscale x 1 x i8> %1 3300} 3301 3302define <vscale x 1 x i8> @test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3303; CHECK-LABEL: test_vluxseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t_nxv1i64: 3304; CHECK: # %bb.0: # %entry 3305; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 3306; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 3307; CHECK-NEXT: vmv1r.v v8, v10 3308; CHECK-NEXT: ret 3309entry: 3310 %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3) 3311 %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) 3312 ret <vscale x 1 x i8> %1 3313} 3314 3315declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i8>, i64, i64) 3316declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 3317 3318define <vscale x 2 x i8> @test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 3319; CHECK-LABEL: test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i8: 3320; CHECK: # %bb.0: # %entry 3321; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3322; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 3323; CHECK-NEXT: vmv1r.v v8, v10 3324; CHECK-NEXT: ret 3325entry: 3326 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 3) 3327 %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) 3328 ret <vscale x 2 x i8> %1 3329} 3330 3331define <vscale x 2 x i8> @test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3332; CHECK-LABEL: test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i8: 3333; CHECK: # %bb.0: # %entry 3334; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3335; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 3336; CHECK-NEXT: vmv1r.v v8, v10 3337; CHECK-NEXT: ret 3338entry: 3339 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 3340 %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) 3341 ret <vscale x 2 x i8> %1 3342} 3343 3344declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i16>, i64, i64) 3345declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 3346 3347define <vscale x 2 x i8> @test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 3348; CHECK-LABEL: test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i16: 3349; CHECK: # %bb.0: # %entry 3350; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3351; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 3352; CHECK-NEXT: vmv1r.v v8, v10 3353; CHECK-NEXT: ret 3354entry: 3355 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 3) 3356 %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) 3357 ret <vscale x 2 x i8> %1 3358} 3359 3360define <vscale x 2 x i8> @test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3361; CHECK-LABEL: test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i16: 3362; CHECK: # %bb.0: # %entry 3363; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3364; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 3365; CHECK-NEXT: vmv1r.v v8, v10 3366; CHECK-NEXT: ret 3367entry: 3368 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 3369 %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) 3370 ret <vscale x 2 x i8> %1 3371} 3372 3373declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i32>, i64, i64) 3374declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 3375 3376define <vscale x 2 x i8> @test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 3377; CHECK-LABEL: test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i32: 3378; CHECK: # %bb.0: # %entry 3379; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3380; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 3381; CHECK-NEXT: vmv1r.v v8, v10 3382; CHECK-NEXT: ret 3383entry: 3384 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 3) 3385 %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) 3386 ret <vscale x 2 x i8> %1 3387} 3388 3389define <vscale x 2 x i8> @test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3390; CHECK-LABEL: test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i32: 3391; CHECK: # %bb.0: # %entry 3392; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3393; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 3394; CHECK-NEXT: vmv1r.v v8, v10 3395; CHECK-NEXT: ret 3396entry: 3397 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 3398 %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) 3399 ret <vscale x 2 x i8> %1 3400} 3401 3402declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i64>, i64, i64) 3403declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 3404 3405define <vscale x 2 x i8> @test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 3406; CHECK-LABEL: test_vluxseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i64: 3407; CHECK: # %bb.0: # %entry 3408; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3409; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8 3410; CHECK-NEXT: vmv1r.v v8, v11 3411; CHECK-NEXT: ret 3412entry: 3413 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 3) 3414 %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) 3415 ret <vscale x 2 x i8> %1 3416} 3417 3418define <vscale x 2 x i8> @test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3419; CHECK-LABEL: test_vluxseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t_nxv2i64: 3420; CHECK: # %bb.0: # %entry 3421; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 3422; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8, v0.t 3423; CHECK-NEXT: vmv1r.v v8, v11 3424; CHECK-NEXT: ret 3425entry: 3426 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3) 3427 %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) 3428 ret <vscale x 2 x i8> %1 3429} 3430 3431declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i8>, i64, i64) 3432declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 3433 3434define <vscale x 4 x i8> @test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 3435; CHECK-LABEL: test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i8: 3436; CHECK: # %bb.0: # %entry 3437; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3438; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 3439; CHECK-NEXT: vmv1r.v v8, v10 3440; CHECK-NEXT: ret 3441entry: 3442 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 3) 3443 %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) 3444 ret <vscale x 4 x i8> %1 3445} 3446 3447define <vscale x 4 x i8> @test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3448; CHECK-LABEL: test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i8: 3449; CHECK: # %bb.0: # %entry 3450; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3451; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 3452; CHECK-NEXT: vmv1r.v v8, v10 3453; CHECK-NEXT: ret 3454entry: 3455 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 3456 %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) 3457 ret <vscale x 4 x i8> %1 3458} 3459 3460declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i16>, i64, i64) 3461declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 3462 3463define <vscale x 4 x i8> @test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 3464; CHECK-LABEL: test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i16: 3465; CHECK: # %bb.0: # %entry 3466; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3467; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 3468; CHECK-NEXT: vmv1r.v v8, v10 3469; CHECK-NEXT: ret 3470entry: 3471 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 3) 3472 %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) 3473 ret <vscale x 4 x i8> %1 3474} 3475 3476define <vscale x 4 x i8> @test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3477; CHECK-LABEL: test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i16: 3478; CHECK: # %bb.0: # %entry 3479; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3480; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 3481; CHECK-NEXT: vmv1r.v v8, v10 3482; CHECK-NEXT: ret 3483entry: 3484 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 3485 %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) 3486 ret <vscale x 4 x i8> %1 3487} 3488 3489declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i32>, i64, i64) 3490declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 3491 3492define <vscale x 4 x i8> @test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 3493; CHECK-LABEL: test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i32: 3494; CHECK: # %bb.0: # %entry 3495; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3496; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8 3497; CHECK-NEXT: vmv1r.v v8, v11 3498; CHECK-NEXT: ret 3499entry: 3500 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 3) 3501 %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) 3502 ret <vscale x 4 x i8> %1 3503} 3504 3505define <vscale x 4 x i8> @test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3506; CHECK-LABEL: test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i32: 3507; CHECK: # %bb.0: # %entry 3508; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3509; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8, v0.t 3510; CHECK-NEXT: vmv1r.v v8, v11 3511; CHECK-NEXT: ret 3512entry: 3513 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 3514 %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) 3515 ret <vscale x 4 x i8> %1 3516} 3517 3518declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i64>, i64, i64) 3519declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 3520 3521define <vscale x 4 x i8> @test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 3522; CHECK-LABEL: test_vluxseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i64: 3523; CHECK: # %bb.0: # %entry 3524; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3525; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8 3526; CHECK-NEXT: vmv1r.v v8, v13 3527; CHECK-NEXT: ret 3528entry: 3529 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 3) 3530 %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) 3531 ret <vscale x 4 x i8> %1 3532} 3533 3534define <vscale x 4 x i8> @test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3535; CHECK-LABEL: test_vluxseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t_nxv4i64: 3536; CHECK: # %bb.0: # %entry 3537; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 3538; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8, v0.t 3539; CHECK-NEXT: vmv1r.v v8, v13 3540; CHECK-NEXT: ret 3541entry: 3542 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3) 3543 %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) 3544 ret <vscale x 4 x i8> %1 3545} 3546 3547declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i8>, i64, i64) 3548declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 3549 3550define <vscale x 8 x i8> @test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 3551; CHECK-LABEL: test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i8: 3552; CHECK: # %bb.0: # %entry 3553; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3554; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 3555; CHECK-NEXT: vmv1r.v v8, v10 3556; CHECK-NEXT: ret 3557entry: 3558 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 3) 3559 %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) 3560 ret <vscale x 8 x i8> %1 3561} 3562 3563define <vscale x 8 x i8> @test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3564; CHECK-LABEL: test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i8: 3565; CHECK: # %bb.0: # %entry 3566; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3567; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 3568; CHECK-NEXT: vmv1r.v v8, v10 3569; CHECK-NEXT: ret 3570entry: 3571 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3572 %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) 3573 ret <vscale x 8 x i8> %1 3574} 3575 3576declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i16>, i64, i64) 3577declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 3578 3579define <vscale x 8 x i8> @test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 3580; CHECK-LABEL: test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i16: 3581; CHECK: # %bb.0: # %entry 3582; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3583; CHECK-NEXT: vluxseg8ei16.v v10, (a0), v8 3584; CHECK-NEXT: vmv1r.v v8, v11 3585; CHECK-NEXT: ret 3586entry: 3587 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 3) 3588 %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) 3589 ret <vscale x 8 x i8> %1 3590} 3591 3592define <vscale x 8 x i8> @test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3593; CHECK-LABEL: test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i16: 3594; CHECK: # %bb.0: # %entry 3595; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3596; CHECK-NEXT: vluxseg8ei16.v v10, (a0), v8, v0.t 3597; CHECK-NEXT: vmv1r.v v8, v11 3598; CHECK-NEXT: ret 3599entry: 3600 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3601 %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) 3602 ret <vscale x 8 x i8> %1 3603} 3604 3605declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i32>, i64, i64) 3606declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 3607 3608define <vscale x 8 x i8> @test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 3609; CHECK-LABEL: test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i32: 3610; CHECK: # %bb.0: # %entry 3611; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3612; CHECK-NEXT: vluxseg8ei32.v v12, (a0), v8 3613; CHECK-NEXT: vmv1r.v v8, v13 3614; CHECK-NEXT: ret 3615entry: 3616 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 3) 3617 %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) 3618 ret <vscale x 8 x i8> %1 3619} 3620 3621define <vscale x 8 x i8> @test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3622; CHECK-LABEL: test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i32: 3623; CHECK: # %bb.0: # %entry 3624; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3625; CHECK-NEXT: vluxseg8ei32.v v12, (a0), v8, v0.t 3626; CHECK-NEXT: vmv1r.v v8, v13 3627; CHECK-NEXT: ret 3628entry: 3629 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3630 %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) 3631 ret <vscale x 8 x i8> %1 3632} 3633 3634declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i64>, i64, i64) 3635declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 3636 3637define <vscale x 8 x i8> @test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 3638; CHECK-LABEL: test_vluxseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i64: 3639; CHECK: # %bb.0: # %entry 3640; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3641; CHECK-NEXT: vluxseg8ei64.v v16, (a0), v8 3642; CHECK-NEXT: vmv1r.v v8, v17 3643; CHECK-NEXT: ret 3644entry: 3645 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 3) 3646 %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) 3647 ret <vscale x 8 x i8> %1 3648} 3649 3650define <vscale x 8 x i8> @test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 3651; CHECK-LABEL: test_vluxseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t_nxv8i64: 3652; CHECK: # %bb.0: # %entry 3653; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 3654; CHECK-NEXT: vluxseg8ei64.v v16, (a0), v8, v0.t 3655; CHECK-NEXT: vmv1r.v v8, v17 3656; CHECK-NEXT: ret 3657entry: 3658 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3) 3659 %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) 3660 ret <vscale x 8 x i8> %1 3661} 3662 3663declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i8>, i64, i64) 3664declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 3665 3666define <vscale x 1 x i16> @test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 3667; CHECK-LABEL: test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i8: 3668; CHECK: # %bb.0: # %entry 3669; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3670; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 3671; CHECK-NEXT: vmv1r.v v8, v10 3672; CHECK-NEXT: ret 3673entry: 3674 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 3675 %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) 3676 ret <vscale x 1 x i16> %1 3677} 3678 3679define <vscale x 1 x i16> @test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3680; CHECK-LABEL: test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i8: 3681; CHECK: # %bb.0: # %entry 3682; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3683; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 3684; CHECK-NEXT: vmv1r.v v8, v10 3685; CHECK-NEXT: ret 3686entry: 3687 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 3688 %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) 3689 ret <vscale x 1 x i16> %1 3690} 3691 3692declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i16>, i64, i64) 3693declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 3694 3695define <vscale x 1 x i16> @test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 3696; CHECK-LABEL: test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i16: 3697; CHECK: # %bb.0: # %entry 3698; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3699; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 3700; CHECK-NEXT: vmv1r.v v8, v10 3701; CHECK-NEXT: ret 3702entry: 3703 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 3704 %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) 3705 ret <vscale x 1 x i16> %1 3706} 3707 3708define <vscale x 1 x i16> @test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3709; CHECK-LABEL: test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i16: 3710; CHECK: # %bb.0: # %entry 3711; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3712; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 3713; CHECK-NEXT: vmv1r.v v8, v10 3714; CHECK-NEXT: ret 3715entry: 3716 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 3717 %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) 3718 ret <vscale x 1 x i16> %1 3719} 3720 3721declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i32>, i64, i64) 3722declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 3723 3724define <vscale x 1 x i16> @test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 3725; CHECK-LABEL: test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i32: 3726; CHECK: # %bb.0: # %entry 3727; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3728; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 3729; CHECK-NEXT: vmv1r.v v8, v10 3730; CHECK-NEXT: ret 3731entry: 3732 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 3733 %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) 3734 ret <vscale x 1 x i16> %1 3735} 3736 3737define <vscale x 1 x i16> @test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3738; CHECK-LABEL: test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i32: 3739; CHECK: # %bb.0: # %entry 3740; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3741; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 3742; CHECK-NEXT: vmv1r.v v8, v10 3743; CHECK-NEXT: ret 3744entry: 3745 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 3746 %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) 3747 ret <vscale x 1 x i16> %1 3748} 3749 3750declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i64>, i64, i64) 3751declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 3752 3753define <vscale x 1 x i16> @test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 3754; CHECK-LABEL: test_vluxseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i64: 3755; CHECK: # %bb.0: # %entry 3756; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3757; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 3758; CHECK-NEXT: vmv1r.v v8, v10 3759; CHECK-NEXT: ret 3760entry: 3761 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 3762 %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) 3763 ret <vscale x 1 x i16> %1 3764} 3765 3766define <vscale x 1 x i16> @test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 3767; CHECK-LABEL: test_vluxseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t_nxv1i64: 3768; CHECK: # %bb.0: # %entry 3769; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 3770; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 3771; CHECK-NEXT: vmv1r.v v8, v10 3772; CHECK-NEXT: ret 3773entry: 3774 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 3775 %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) 3776 ret <vscale x 1 x i16> %1 3777} 3778 3779declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i8>, i64, i64) 3780declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 3781 3782define <vscale x 2 x i16> @test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 3783; CHECK-LABEL: test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i8: 3784; CHECK: # %bb.0: # %entry 3785; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3786; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 3787; CHECK-NEXT: vmv1r.v v8, v10 3788; CHECK-NEXT: ret 3789entry: 3790 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 3791 %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) 3792 ret <vscale x 2 x i16> %1 3793} 3794 3795define <vscale x 2 x i16> @test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3796; CHECK-LABEL: test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i8: 3797; CHECK: # %bb.0: # %entry 3798; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3799; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 3800; CHECK-NEXT: vmv1r.v v8, v10 3801; CHECK-NEXT: ret 3802entry: 3803 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 3804 %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) 3805 ret <vscale x 2 x i16> %1 3806} 3807 3808declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i16>, i64, i64) 3809declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 3810 3811define <vscale x 2 x i16> @test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 3812; CHECK-LABEL: test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i16: 3813; CHECK: # %bb.0: # %entry 3814; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3815; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 3816; CHECK-NEXT: vmv1r.v v8, v10 3817; CHECK-NEXT: ret 3818entry: 3819 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 3820 %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) 3821 ret <vscale x 2 x i16> %1 3822} 3823 3824define <vscale x 2 x i16> @test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3825; CHECK-LABEL: test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i16: 3826; CHECK: # %bb.0: # %entry 3827; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3828; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 3829; CHECK-NEXT: vmv1r.v v8, v10 3830; CHECK-NEXT: ret 3831entry: 3832 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 3833 %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) 3834 ret <vscale x 2 x i16> %1 3835} 3836 3837declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i32>, i64, i64) 3838declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 3839 3840define <vscale x 2 x i16> @test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 3841; CHECK-LABEL: test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i32: 3842; CHECK: # %bb.0: # %entry 3843; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3844; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 3845; CHECK-NEXT: vmv1r.v v8, v10 3846; CHECK-NEXT: ret 3847entry: 3848 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 3849 %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) 3850 ret <vscale x 2 x i16> %1 3851} 3852 3853define <vscale x 2 x i16> @test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3854; CHECK-LABEL: test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i32: 3855; CHECK: # %bb.0: # %entry 3856; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3857; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 3858; CHECK-NEXT: vmv1r.v v8, v10 3859; CHECK-NEXT: ret 3860entry: 3861 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 3862 %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) 3863 ret <vscale x 2 x i16> %1 3864} 3865 3866declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i64>, i64, i64) 3867declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 3868 3869define <vscale x 2 x i16> @test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 3870; CHECK-LABEL: test_vluxseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i64: 3871; CHECK: # %bb.0: # %entry 3872; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3873; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 3874; CHECK-NEXT: vmv1r.v v8, v11 3875; CHECK-NEXT: ret 3876entry: 3877 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 3878 %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) 3879 ret <vscale x 2 x i16> %1 3880} 3881 3882define <vscale x 2 x i16> @test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 3883; CHECK-LABEL: test_vluxseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t_nxv2i64: 3884; CHECK: # %bb.0: # %entry 3885; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 3886; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 3887; CHECK-NEXT: vmv1r.v v8, v11 3888; CHECK-NEXT: ret 3889entry: 3890 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 3891 %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) 3892 ret <vscale x 2 x i16> %1 3893} 3894 3895declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i8>, i64, i64) 3896declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 3897 3898define <vscale x 4 x i16> @test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 3899; CHECK-LABEL: test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i8: 3900; CHECK: # %bb.0: # %entry 3901; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 3902; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 3903; CHECK-NEXT: vmv1r.v v8, v10 3904; CHECK-NEXT: ret 3905entry: 3906 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 3907 %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) 3908 ret <vscale x 4 x i16> %1 3909} 3910 3911define <vscale x 4 x i16> @test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3912; CHECK-LABEL: test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i8: 3913; CHECK: # %bb.0: # %entry 3914; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 3915; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 3916; CHECK-NEXT: vmv1r.v v8, v10 3917; CHECK-NEXT: ret 3918entry: 3919 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 3920 %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) 3921 ret <vscale x 4 x i16> %1 3922} 3923 3924declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i16>, i64, i64) 3925declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 3926 3927define <vscale x 4 x i16> @test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 3928; CHECK-LABEL: test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i16: 3929; CHECK: # %bb.0: # %entry 3930; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 3931; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 3932; CHECK-NEXT: vmv1r.v v8, v10 3933; CHECK-NEXT: ret 3934entry: 3935 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 3936 %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) 3937 ret <vscale x 4 x i16> %1 3938} 3939 3940define <vscale x 4 x i16> @test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3941; CHECK-LABEL: test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i16: 3942; CHECK: # %bb.0: # %entry 3943; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 3944; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 3945; CHECK-NEXT: vmv1r.v v8, v10 3946; CHECK-NEXT: ret 3947entry: 3948 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 3949 %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) 3950 ret <vscale x 4 x i16> %1 3951} 3952 3953declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i32>, i64, i64) 3954declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 3955 3956define <vscale x 4 x i16> @test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 3957; CHECK-LABEL: test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i32: 3958; CHECK: # %bb.0: # %entry 3959; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 3960; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 3961; CHECK-NEXT: vmv1r.v v8, v11 3962; CHECK-NEXT: ret 3963entry: 3964 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 3965 %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) 3966 ret <vscale x 4 x i16> %1 3967} 3968 3969define <vscale x 4 x i16> @test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3970; CHECK-LABEL: test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i32: 3971; CHECK: # %bb.0: # %entry 3972; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 3973; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 3974; CHECK-NEXT: vmv1r.v v8, v11 3975; CHECK-NEXT: ret 3976entry: 3977 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 3978 %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) 3979 ret <vscale x 4 x i16> %1 3980} 3981 3982declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i64>, i64, i64) 3983declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 3984 3985define <vscale x 4 x i16> @test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 3986; CHECK-LABEL: test_vluxseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i64: 3987; CHECK: # %bb.0: # %entry 3988; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 3989; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 3990; CHECK-NEXT: vmv1r.v v8, v13 3991; CHECK-NEXT: ret 3992entry: 3993 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 3994 %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) 3995 ret <vscale x 4 x i16> %1 3996} 3997 3998define <vscale x 4 x i16> @test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 3999; CHECK-LABEL: test_vluxseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t_nxv4i64: 4000; CHECK: # %bb.0: # %entry 4001; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4002; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 4003; CHECK-NEXT: vmv1r.v v8, v13 4004; CHECK-NEXT: ret 4005entry: 4006 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4007 %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) 4008 ret <vscale x 4 x i16> %1 4009} 4010 4011declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i8>, i64, i64) 4012declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 4013 4014define <vscale x 8 x i16> @test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 4015; CHECK-LABEL: test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i8: 4016; CHECK: # %bb.0: # %entry 4017; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4018; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 4019; CHECK-NEXT: vmv2r.v v8, v12 4020; CHECK-NEXT: ret 4021entry: 4022 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 4023 %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) 4024 ret <vscale x 8 x i16> %1 4025} 4026 4027define <vscale x 8 x i16> @test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4028; CHECK-LABEL: test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i8: 4029; CHECK: # %bb.0: # %entry 4030; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4031; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 4032; CHECK-NEXT: vmv2r.v v8, v12 4033; CHECK-NEXT: ret 4034entry: 4035 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4036 %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) 4037 ret <vscale x 8 x i16> %1 4038} 4039 4040declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i16>, i64, i64) 4041declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 4042 4043define <vscale x 8 x i16> @test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 4044; CHECK-LABEL: test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i16: 4045; CHECK: # %bb.0: # %entry 4046; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4047; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 4048; CHECK-NEXT: vmv2r.v v8, v12 4049; CHECK-NEXT: ret 4050entry: 4051 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 4052 %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) 4053 ret <vscale x 8 x i16> %1 4054} 4055 4056define <vscale x 8 x i16> @test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4057; CHECK-LABEL: test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i16: 4058; CHECK: # %bb.0: # %entry 4059; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4060; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 4061; CHECK-NEXT: vmv2r.v v8, v12 4062; CHECK-NEXT: ret 4063entry: 4064 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4065 %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) 4066 ret <vscale x 8 x i16> %1 4067} 4068 4069declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i32>, i64, i64) 4070declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 4071 4072define <vscale x 8 x i16> @test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 4073; CHECK-LABEL: test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i32: 4074; CHECK: # %bb.0: # %entry 4075; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4076; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 4077; CHECK-NEXT: vmv2r.v v8, v14 4078; CHECK-NEXT: ret 4079entry: 4080 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 4081 %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) 4082 ret <vscale x 8 x i16> %1 4083} 4084 4085define <vscale x 8 x i16> @test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4086; CHECK-LABEL: test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i32: 4087; CHECK: # %bb.0: # %entry 4088; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4089; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 4090; CHECK-NEXT: vmv2r.v v8, v14 4091; CHECK-NEXT: ret 4092entry: 4093 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4094 %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) 4095 ret <vscale x 8 x i16> %1 4096} 4097 4098declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i64>, i64, i64) 4099declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 4100 4101define <vscale x 8 x i16> @test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 4102; CHECK-LABEL: test_vluxseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i64: 4103; CHECK: # %bb.0: # %entry 4104; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4105; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8 4106; CHECK-NEXT: vmv2r.v v8, v18 4107; CHECK-NEXT: ret 4108entry: 4109 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 4110 %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) 4111 ret <vscale x 8 x i16> %1 4112} 4113 4114define <vscale x 8 x i16> @test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4115; CHECK-LABEL: test_vluxseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t_nxv8i64: 4116; CHECK: # %bb.0: # %entry 4117; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4118; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8, v0.t 4119; CHECK-NEXT: vmv2r.v v8, v18 4120; CHECK-NEXT: ret 4121entry: 4122 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4123 %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) 4124 ret <vscale x 8 x i16> %1 4125} 4126 4127declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 16 x i8>, i64, i64) 4128declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i8.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i64, i64, i64) 4129 4130define <vscale x 16 x i16> @test_vluxseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl) { 4131; CHECK-LABEL: test_vluxseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i8: 4132; CHECK: # %bb.0: # %entry 4133; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 4134; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 4135; CHECK-NEXT: vmv4r.v v8, v16 4136; CHECK-NEXT: ret 4137entry: 4138 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, i64 %vl, i64 4) 4139 %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) 4140 ret <vscale x 16 x i16> %1 4141} 4142 4143define <vscale x 16 x i16> @test_vluxseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl, <vscale x 16 x i1> %mask) { 4144; CHECK-LABEL: test_vluxseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i8: 4145; CHECK: # %bb.0: # %entry 4146; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 4147; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 4148; CHECK-NEXT: vmv4r.v v8, v16 4149; CHECK-NEXT: ret 4150entry: 4151 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 4152 %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) 4153 ret <vscale x 16 x i16> %1 4154} 4155 4156declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 16 x i16>, i64, i64) 4157declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i16.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i64, i64, i64) 4158 4159define <vscale x 16 x i16> @test_vluxseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl) { 4160; CHECK-LABEL: test_vluxseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i16: 4161; CHECK: # %bb.0: # %entry 4162; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 4163; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 4164; CHECK-NEXT: vmv4r.v v8, v16 4165; CHECK-NEXT: ret 4166entry: 4167 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, i64 %vl, i64 4) 4168 %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) 4169 ret <vscale x 16 x i16> %1 4170} 4171 4172define <vscale x 16 x i16> @test_vluxseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl, <vscale x 16 x i1> %mask) { 4173; CHECK-LABEL: test_vluxseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i16: 4174; CHECK: # %bb.0: # %entry 4175; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 4176; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 4177; CHECK-NEXT: vmv4r.v v8, v16 4178; CHECK-NEXT: ret 4179entry: 4180 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 4181 %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) 4182 ret <vscale x 16 x i16> %1 4183} 4184 4185declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 16 x i32>, i64, i64) 4186declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i32.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i64, i64, i64) 4187 4188define <vscale x 16 x i16> @test_vluxseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl) { 4189; CHECK-LABEL: test_vluxseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i32: 4190; CHECK: # %bb.0: # %entry 4191; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 4192; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8 4193; CHECK-NEXT: vmv4r.v v8, v20 4194; CHECK-NEXT: ret 4195entry: 4196 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, i64 %vl, i64 4) 4197 %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) 4198 ret <vscale x 16 x i16> %1 4199} 4200 4201define <vscale x 16 x i16> @test_vluxseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl, <vscale x 16 x i1> %mask) { 4202; CHECK-LABEL: test_vluxseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t_nxv16i32: 4203; CHECK: # %bb.0: # %entry 4204; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 4205; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8, v0.t 4206; CHECK-NEXT: vmv4r.v v8, v20 4207; CHECK-NEXT: ret 4208entry: 4209 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 4210 %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) 4211 ret <vscale x 16 x i16> %1 4212} 4213 4214declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i8>, i64, i64) 4215declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 4216 4217define <vscale x 1 x i16> @test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 4218; CHECK-LABEL: test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i8: 4219; CHECK: # %bb.0: # %entry 4220; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4221; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 4222; CHECK-NEXT: vmv1r.v v8, v10 4223; CHECK-NEXT: ret 4224entry: 4225 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 4226 %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) 4227 ret <vscale x 1 x i16> %1 4228} 4229 4230define <vscale x 1 x i16> @test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4231; CHECK-LABEL: test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i8: 4232; CHECK: # %bb.0: # %entry 4233; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4234; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 4235; CHECK-NEXT: vmv1r.v v8, v10 4236; CHECK-NEXT: ret 4237entry: 4238 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4239 %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) 4240 ret <vscale x 1 x i16> %1 4241} 4242 4243declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i16>, i64, i64) 4244declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 4245 4246define <vscale x 1 x i16> @test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 4247; CHECK-LABEL: test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i16: 4248; CHECK: # %bb.0: # %entry 4249; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4250; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 4251; CHECK-NEXT: vmv1r.v v8, v10 4252; CHECK-NEXT: ret 4253entry: 4254 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 4255 %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) 4256 ret <vscale x 1 x i16> %1 4257} 4258 4259define <vscale x 1 x i16> @test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4260; CHECK-LABEL: test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i16: 4261; CHECK: # %bb.0: # %entry 4262; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4263; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 4264; CHECK-NEXT: vmv1r.v v8, v10 4265; CHECK-NEXT: ret 4266entry: 4267 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4268 %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) 4269 ret <vscale x 1 x i16> %1 4270} 4271 4272declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i32>, i64, i64) 4273declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 4274 4275define <vscale x 1 x i16> @test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 4276; CHECK-LABEL: test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i32: 4277; CHECK: # %bb.0: # %entry 4278; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4279; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 4280; CHECK-NEXT: vmv1r.v v8, v10 4281; CHECK-NEXT: ret 4282entry: 4283 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 4284 %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) 4285 ret <vscale x 1 x i16> %1 4286} 4287 4288define <vscale x 1 x i16> @test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4289; CHECK-LABEL: test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i32: 4290; CHECK: # %bb.0: # %entry 4291; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4292; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 4293; CHECK-NEXT: vmv1r.v v8, v10 4294; CHECK-NEXT: ret 4295entry: 4296 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4297 %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) 4298 ret <vscale x 1 x i16> %1 4299} 4300 4301declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i64>, i64, i64) 4302declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 4303 4304define <vscale x 1 x i16> @test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 4305; CHECK-LABEL: test_vluxseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i64: 4306; CHECK: # %bb.0: # %entry 4307; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4308; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 4309; CHECK-NEXT: vmv1r.v v8, v10 4310; CHECK-NEXT: ret 4311entry: 4312 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 4313 %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) 4314 ret <vscale x 1 x i16> %1 4315} 4316 4317define <vscale x 1 x i16> @test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4318; CHECK-LABEL: test_vluxseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t_nxv1i64: 4319; CHECK: # %bb.0: # %entry 4320; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4321; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 4322; CHECK-NEXT: vmv1r.v v8, v10 4323; CHECK-NEXT: ret 4324entry: 4325 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4326 %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) 4327 ret <vscale x 1 x i16> %1 4328} 4329 4330declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i8>, i64, i64) 4331declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 4332 4333define <vscale x 2 x i16> @test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 4334; CHECK-LABEL: test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i8: 4335; CHECK: # %bb.0: # %entry 4336; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4337; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 4338; CHECK-NEXT: vmv1r.v v8, v10 4339; CHECK-NEXT: ret 4340entry: 4341 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 4342 %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) 4343 ret <vscale x 2 x i16> %1 4344} 4345 4346define <vscale x 2 x i16> @test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4347; CHECK-LABEL: test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i8: 4348; CHECK: # %bb.0: # %entry 4349; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4350; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 4351; CHECK-NEXT: vmv1r.v v8, v10 4352; CHECK-NEXT: ret 4353entry: 4354 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4355 %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) 4356 ret <vscale x 2 x i16> %1 4357} 4358 4359declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i16>, i64, i64) 4360declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 4361 4362define <vscale x 2 x i16> @test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 4363; CHECK-LABEL: test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i16: 4364; CHECK: # %bb.0: # %entry 4365; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4366; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 4367; CHECK-NEXT: vmv1r.v v8, v10 4368; CHECK-NEXT: ret 4369entry: 4370 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 4371 %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) 4372 ret <vscale x 2 x i16> %1 4373} 4374 4375define <vscale x 2 x i16> @test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4376; CHECK-LABEL: test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i16: 4377; CHECK: # %bb.0: # %entry 4378; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4379; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 4380; CHECK-NEXT: vmv1r.v v8, v10 4381; CHECK-NEXT: ret 4382entry: 4383 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4384 %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) 4385 ret <vscale x 2 x i16> %1 4386} 4387 4388declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i32>, i64, i64) 4389declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 4390 4391define <vscale x 2 x i16> @test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 4392; CHECK-LABEL: test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i32: 4393; CHECK: # %bb.0: # %entry 4394; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4395; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 4396; CHECK-NEXT: vmv1r.v v8, v10 4397; CHECK-NEXT: ret 4398entry: 4399 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 4400 %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) 4401 ret <vscale x 2 x i16> %1 4402} 4403 4404define <vscale x 2 x i16> @test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4405; CHECK-LABEL: test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i32: 4406; CHECK: # %bb.0: # %entry 4407; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4408; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 4409; CHECK-NEXT: vmv1r.v v8, v10 4410; CHECK-NEXT: ret 4411entry: 4412 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4413 %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) 4414 ret <vscale x 2 x i16> %1 4415} 4416 4417declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i64>, i64, i64) 4418declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 4419 4420define <vscale x 2 x i16> @test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 4421; CHECK-LABEL: test_vluxseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i64: 4422; CHECK: # %bb.0: # %entry 4423; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4424; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 4425; CHECK-NEXT: vmv1r.v v8, v11 4426; CHECK-NEXT: ret 4427entry: 4428 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 4429 %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) 4430 ret <vscale x 2 x i16> %1 4431} 4432 4433define <vscale x 2 x i16> @test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4434; CHECK-LABEL: test_vluxseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t_nxv2i64: 4435; CHECK: # %bb.0: # %entry 4436; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4437; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 4438; CHECK-NEXT: vmv1r.v v8, v11 4439; CHECK-NEXT: ret 4440entry: 4441 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4442 %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) 4443 ret <vscale x 2 x i16> %1 4444} 4445 4446declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i8>, i64, i64) 4447declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 4448 4449define <vscale x 4 x i16> @test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 4450; CHECK-LABEL: test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i8: 4451; CHECK: # %bb.0: # %entry 4452; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4453; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 4454; CHECK-NEXT: vmv1r.v v8, v10 4455; CHECK-NEXT: ret 4456entry: 4457 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 4458 %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) 4459 ret <vscale x 4 x i16> %1 4460} 4461 4462define <vscale x 4 x i16> @test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 4463; CHECK-LABEL: test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i8: 4464; CHECK: # %bb.0: # %entry 4465; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4466; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 4467; CHECK-NEXT: vmv1r.v v8, v10 4468; CHECK-NEXT: ret 4469entry: 4470 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4471 %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) 4472 ret <vscale x 4 x i16> %1 4473} 4474 4475declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i16>, i64, i64) 4476declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 4477 4478define <vscale x 4 x i16> @test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 4479; CHECK-LABEL: test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i16: 4480; CHECK: # %bb.0: # %entry 4481; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4482; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 4483; CHECK-NEXT: vmv1r.v v8, v10 4484; CHECK-NEXT: ret 4485entry: 4486 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 4487 %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) 4488 ret <vscale x 4 x i16> %1 4489} 4490 4491define <vscale x 4 x i16> @test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 4492; CHECK-LABEL: test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i16: 4493; CHECK: # %bb.0: # %entry 4494; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4495; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 4496; CHECK-NEXT: vmv1r.v v8, v10 4497; CHECK-NEXT: ret 4498entry: 4499 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4500 %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) 4501 ret <vscale x 4 x i16> %1 4502} 4503 4504declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i32>, i64, i64) 4505declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 4506 4507define <vscale x 4 x i16> @test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 4508; CHECK-LABEL: test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i32: 4509; CHECK: # %bb.0: # %entry 4510; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4511; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 4512; CHECK-NEXT: vmv1r.v v8, v11 4513; CHECK-NEXT: ret 4514entry: 4515 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 4516 %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) 4517 ret <vscale x 4 x i16> %1 4518} 4519 4520define <vscale x 4 x i16> @test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 4521; CHECK-LABEL: test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i32: 4522; CHECK: # %bb.0: # %entry 4523; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4524; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 4525; CHECK-NEXT: vmv1r.v v8, v11 4526; CHECK-NEXT: ret 4527entry: 4528 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4529 %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) 4530 ret <vscale x 4 x i16> %1 4531} 4532 4533declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i64>, i64, i64) 4534declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 4535 4536define <vscale x 4 x i16> @test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 4537; CHECK-LABEL: test_vluxseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i64: 4538; CHECK: # %bb.0: # %entry 4539; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4540; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8 4541; CHECK-NEXT: vmv1r.v v8, v13 4542; CHECK-NEXT: ret 4543entry: 4544 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 4545 %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) 4546 ret <vscale x 4 x i16> %1 4547} 4548 4549define <vscale x 4 x i16> @test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 4550; CHECK-LABEL: test_vluxseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t_nxv4i64: 4551; CHECK: # %bb.0: # %entry 4552; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4553; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8, v0.t 4554; CHECK-NEXT: vmv1r.v v8, v13 4555; CHECK-NEXT: ret 4556entry: 4557 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4558 %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) 4559 ret <vscale x 4 x i16> %1 4560} 4561 4562declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i8>, i64, i64) 4563declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 4564 4565define <vscale x 8 x i16> @test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 4566; CHECK-LABEL: test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i8: 4567; CHECK: # %bb.0: # %entry 4568; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4569; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 4570; CHECK-NEXT: vmv2r.v v8, v12 4571; CHECK-NEXT: ret 4572entry: 4573 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 4574 %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) 4575 ret <vscale x 8 x i16> %1 4576} 4577 4578define <vscale x 8 x i16> @test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4579; CHECK-LABEL: test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i8: 4580; CHECK: # %bb.0: # %entry 4581; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4582; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 4583; CHECK-NEXT: vmv2r.v v8, v12 4584; CHECK-NEXT: ret 4585entry: 4586 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4587 %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) 4588 ret <vscale x 8 x i16> %1 4589} 4590 4591declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i16>, i64, i64) 4592declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 4593 4594define <vscale x 8 x i16> @test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 4595; CHECK-LABEL: test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i16: 4596; CHECK: # %bb.0: # %entry 4597; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4598; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 4599; CHECK-NEXT: vmv2r.v v8, v12 4600; CHECK-NEXT: ret 4601entry: 4602 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 4603 %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) 4604 ret <vscale x 8 x i16> %1 4605} 4606 4607define <vscale x 8 x i16> @test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4608; CHECK-LABEL: test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i16: 4609; CHECK: # %bb.0: # %entry 4610; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4611; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 4612; CHECK-NEXT: vmv2r.v v8, v12 4613; CHECK-NEXT: ret 4614entry: 4615 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4616 %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) 4617 ret <vscale x 8 x i16> %1 4618} 4619 4620declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i32>, i64, i64) 4621declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 4622 4623define <vscale x 8 x i16> @test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 4624; CHECK-LABEL: test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i32: 4625; CHECK: # %bb.0: # %entry 4626; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4627; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8 4628; CHECK-NEXT: vmv2r.v v8, v14 4629; CHECK-NEXT: ret 4630entry: 4631 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 4632 %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) 4633 ret <vscale x 8 x i16> %1 4634} 4635 4636define <vscale x 8 x i16> @test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4637; CHECK-LABEL: test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i32: 4638; CHECK: # %bb.0: # %entry 4639; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4640; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8, v0.t 4641; CHECK-NEXT: vmv2r.v v8, v14 4642; CHECK-NEXT: ret 4643entry: 4644 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4645 %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) 4646 ret <vscale x 8 x i16> %1 4647} 4648 4649declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i64>, i64, i64) 4650declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 4651 4652define <vscale x 8 x i16> @test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 4653; CHECK-LABEL: test_vluxseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i64: 4654; CHECK: # %bb.0: # %entry 4655; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4656; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8 4657; CHECK-NEXT: vmv2r.v v8, v18 4658; CHECK-NEXT: ret 4659entry: 4660 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 4661 %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) 4662 ret <vscale x 8 x i16> %1 4663} 4664 4665define <vscale x 8 x i16> @test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 4666; CHECK-LABEL: test_vluxseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t_nxv8i64: 4667; CHECK: # %bb.0: # %entry 4668; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 4669; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8, v0.t 4670; CHECK-NEXT: vmv2r.v v8, v18 4671; CHECK-NEXT: ret 4672entry: 4673 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 4674 %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) 4675 ret <vscale x 8 x i16> %1 4676} 4677 4678declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i8>, i64, i64) 4679declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 4680 4681define <vscale x 1 x i16> @test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 4682; CHECK-LABEL: test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i8: 4683; CHECK: # %bb.0: # %entry 4684; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4685; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 4686; CHECK-NEXT: vmv1r.v v8, v10 4687; CHECK-NEXT: ret 4688entry: 4689 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 4690 %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) 4691 ret <vscale x 1 x i16> %1 4692} 4693 4694define <vscale x 1 x i16> @test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4695; CHECK-LABEL: test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i8: 4696; CHECK: # %bb.0: # %entry 4697; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4698; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 4699; CHECK-NEXT: vmv1r.v v8, v10 4700; CHECK-NEXT: ret 4701entry: 4702 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4703 %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) 4704 ret <vscale x 1 x i16> %1 4705} 4706 4707declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i16>, i64, i64) 4708declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 4709 4710define <vscale x 1 x i16> @test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 4711; CHECK-LABEL: test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i16: 4712; CHECK: # %bb.0: # %entry 4713; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4714; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 4715; CHECK-NEXT: vmv1r.v v8, v10 4716; CHECK-NEXT: ret 4717entry: 4718 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 4719 %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) 4720 ret <vscale x 1 x i16> %1 4721} 4722 4723define <vscale x 1 x i16> @test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4724; CHECK-LABEL: test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i16: 4725; CHECK: # %bb.0: # %entry 4726; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4727; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 4728; CHECK-NEXT: vmv1r.v v8, v10 4729; CHECK-NEXT: ret 4730entry: 4731 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4732 %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) 4733 ret <vscale x 1 x i16> %1 4734} 4735 4736declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i32>, i64, i64) 4737declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 4738 4739define <vscale x 1 x i16> @test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 4740; CHECK-LABEL: test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i32: 4741; CHECK: # %bb.0: # %entry 4742; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4743; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 4744; CHECK-NEXT: vmv1r.v v8, v10 4745; CHECK-NEXT: ret 4746entry: 4747 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 4748 %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) 4749 ret <vscale x 1 x i16> %1 4750} 4751 4752define <vscale x 1 x i16> @test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4753; CHECK-LABEL: test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i32: 4754; CHECK: # %bb.0: # %entry 4755; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4756; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 4757; CHECK-NEXT: vmv1r.v v8, v10 4758; CHECK-NEXT: ret 4759entry: 4760 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4761 %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) 4762 ret <vscale x 1 x i16> %1 4763} 4764 4765declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i64>, i64, i64) 4766declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 4767 4768define <vscale x 1 x i16> @test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 4769; CHECK-LABEL: test_vluxseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i64: 4770; CHECK: # %bb.0: # %entry 4771; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4772; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 4773; CHECK-NEXT: vmv1r.v v8, v10 4774; CHECK-NEXT: ret 4775entry: 4776 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 4777 %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) 4778 ret <vscale x 1 x i16> %1 4779} 4780 4781define <vscale x 1 x i16> @test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 4782; CHECK-LABEL: test_vluxseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t_nxv1i64: 4783; CHECK: # %bb.0: # %entry 4784; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 4785; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 4786; CHECK-NEXT: vmv1r.v v8, v10 4787; CHECK-NEXT: ret 4788entry: 4789 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 4790 %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) 4791 ret <vscale x 1 x i16> %1 4792} 4793 4794declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i8>, i64, i64) 4795declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 4796 4797define <vscale x 2 x i16> @test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 4798; CHECK-LABEL: test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i8: 4799; CHECK: # %bb.0: # %entry 4800; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4801; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 4802; CHECK-NEXT: vmv1r.v v8, v10 4803; CHECK-NEXT: ret 4804entry: 4805 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 4806 %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) 4807 ret <vscale x 2 x i16> %1 4808} 4809 4810define <vscale x 2 x i16> @test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4811; CHECK-LABEL: test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i8: 4812; CHECK: # %bb.0: # %entry 4813; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4814; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 4815; CHECK-NEXT: vmv1r.v v8, v10 4816; CHECK-NEXT: ret 4817entry: 4818 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4819 %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) 4820 ret <vscale x 2 x i16> %1 4821} 4822 4823declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i16>, i64, i64) 4824declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 4825 4826define <vscale x 2 x i16> @test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 4827; CHECK-LABEL: test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i16: 4828; CHECK: # %bb.0: # %entry 4829; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4830; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 4831; CHECK-NEXT: vmv1r.v v8, v10 4832; CHECK-NEXT: ret 4833entry: 4834 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 4835 %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) 4836 ret <vscale x 2 x i16> %1 4837} 4838 4839define <vscale x 2 x i16> @test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4840; CHECK-LABEL: test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i16: 4841; CHECK: # %bb.0: # %entry 4842; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4843; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 4844; CHECK-NEXT: vmv1r.v v8, v10 4845; CHECK-NEXT: ret 4846entry: 4847 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4848 %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) 4849 ret <vscale x 2 x i16> %1 4850} 4851 4852declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i32>, i64, i64) 4853declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 4854 4855define <vscale x 2 x i16> @test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 4856; CHECK-LABEL: test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i32: 4857; CHECK: # %bb.0: # %entry 4858; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4859; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 4860; CHECK-NEXT: vmv1r.v v8, v10 4861; CHECK-NEXT: ret 4862entry: 4863 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 4864 %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) 4865 ret <vscale x 2 x i16> %1 4866} 4867 4868define <vscale x 2 x i16> @test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4869; CHECK-LABEL: test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i32: 4870; CHECK: # %bb.0: # %entry 4871; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4872; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 4873; CHECK-NEXT: vmv1r.v v8, v10 4874; CHECK-NEXT: ret 4875entry: 4876 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4877 %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) 4878 ret <vscale x 2 x i16> %1 4879} 4880 4881declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i64>, i64, i64) 4882declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 4883 4884define <vscale x 2 x i16> @test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 4885; CHECK-LABEL: test_vluxseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i64: 4886; CHECK: # %bb.0: # %entry 4887; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4888; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 4889; CHECK-NEXT: vmv1r.v v8, v11 4890; CHECK-NEXT: ret 4891entry: 4892 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 4893 %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) 4894 ret <vscale x 2 x i16> %1 4895} 4896 4897define <vscale x 2 x i16> @test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 4898; CHECK-LABEL: test_vluxseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t_nxv2i64: 4899; CHECK: # %bb.0: # %entry 4900; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 4901; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 4902; CHECK-NEXT: vmv1r.v v8, v11 4903; CHECK-NEXT: ret 4904entry: 4905 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 4906 %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) 4907 ret <vscale x 2 x i16> %1 4908} 4909 4910declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i8>, i64, i64) 4911declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 4912 4913define <vscale x 4 x i16> @test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 4914; CHECK-LABEL: test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i8: 4915; CHECK: # %bb.0: # %entry 4916; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4917; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 4918; CHECK-NEXT: vmv1r.v v8, v10 4919; CHECK-NEXT: ret 4920entry: 4921 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 4922 %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) 4923 ret <vscale x 4 x i16> %1 4924} 4925 4926define <vscale x 4 x i16> @test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 4927; CHECK-LABEL: test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i8: 4928; CHECK: # %bb.0: # %entry 4929; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4930; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 4931; CHECK-NEXT: vmv1r.v v8, v10 4932; CHECK-NEXT: ret 4933entry: 4934 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4935 %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) 4936 ret <vscale x 4 x i16> %1 4937} 4938 4939declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i16>, i64, i64) 4940declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 4941 4942define <vscale x 4 x i16> @test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 4943; CHECK-LABEL: test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i16: 4944; CHECK: # %bb.0: # %entry 4945; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4946; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 4947; CHECK-NEXT: vmv1r.v v8, v10 4948; CHECK-NEXT: ret 4949entry: 4950 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 4951 %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) 4952 ret <vscale x 4 x i16> %1 4953} 4954 4955define <vscale x 4 x i16> @test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 4956; CHECK-LABEL: test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i16: 4957; CHECK: # %bb.0: # %entry 4958; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4959; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 4960; CHECK-NEXT: vmv1r.v v8, v10 4961; CHECK-NEXT: ret 4962entry: 4963 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4964 %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) 4965 ret <vscale x 4 x i16> %1 4966} 4967 4968declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i32>, i64, i64) 4969declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 4970 4971define <vscale x 4 x i16> @test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 4972; CHECK-LABEL: test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i32: 4973; CHECK: # %bb.0: # %entry 4974; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4975; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 4976; CHECK-NEXT: vmv1r.v v8, v11 4977; CHECK-NEXT: ret 4978entry: 4979 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 4980 %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) 4981 ret <vscale x 4 x i16> %1 4982} 4983 4984define <vscale x 4 x i16> @test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 4985; CHECK-LABEL: test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i32: 4986; CHECK: # %bb.0: # %entry 4987; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 4988; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 4989; CHECK-NEXT: vmv1r.v v8, v11 4990; CHECK-NEXT: ret 4991entry: 4992 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 4993 %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) 4994 ret <vscale x 4 x i16> %1 4995} 4996 4997declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i64>, i64, i64) 4998declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 4999 5000define <vscale x 4 x i16> @test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 5001; CHECK-LABEL: test_vluxseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i64: 5002; CHECK: # %bb.0: # %entry 5003; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5004; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8 5005; CHECK-NEXT: vmv1r.v v8, v13 5006; CHECK-NEXT: ret 5007entry: 5008 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 5009 %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) 5010 ret <vscale x 4 x i16> %1 5011} 5012 5013define <vscale x 4 x i16> @test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5014; CHECK-LABEL: test_vluxseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t_nxv4i64: 5015; CHECK: # %bb.0: # %entry 5016; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5017; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8, v0.t 5018; CHECK-NEXT: vmv1r.v v8, v13 5019; CHECK-NEXT: ret 5020entry: 5021 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5022 %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) 5023 ret <vscale x 4 x i16> %1 5024} 5025 5026declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i8>, i64, i64) 5027declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 5028 5029define <vscale x 8 x i16> @test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 5030; CHECK-LABEL: test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i8: 5031; CHECK: # %bb.0: # %entry 5032; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5033; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 5034; CHECK-NEXT: vmv2r.v v8, v12 5035; CHECK-NEXT: ret 5036entry: 5037 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 5038 %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) 5039 ret <vscale x 8 x i16> %1 5040} 5041 5042define <vscale x 8 x i16> @test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 5043; CHECK-LABEL: test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i8: 5044; CHECK: # %bb.0: # %entry 5045; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5046; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 5047; CHECK-NEXT: vmv2r.v v8, v12 5048; CHECK-NEXT: ret 5049entry: 5050 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 5051 %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) 5052 ret <vscale x 8 x i16> %1 5053} 5054 5055declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i16>, i64, i64) 5056declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 5057 5058define <vscale x 8 x i16> @test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 5059; CHECK-LABEL: test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i16: 5060; CHECK: # %bb.0: # %entry 5061; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5062; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 5063; CHECK-NEXT: vmv2r.v v8, v12 5064; CHECK-NEXT: ret 5065entry: 5066 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 5067 %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) 5068 ret <vscale x 8 x i16> %1 5069} 5070 5071define <vscale x 8 x i16> @test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 5072; CHECK-LABEL: test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i16: 5073; CHECK: # %bb.0: # %entry 5074; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5075; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 5076; CHECK-NEXT: vmv2r.v v8, v12 5077; CHECK-NEXT: ret 5078entry: 5079 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 5080 %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) 5081 ret <vscale x 8 x i16> %1 5082} 5083 5084declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i32>, i64, i64) 5085declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 5086 5087define <vscale x 8 x i16> @test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 5088; CHECK-LABEL: test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i32: 5089; CHECK: # %bb.0: # %entry 5090; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5091; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8 5092; CHECK-NEXT: vmv2r.v v8, v14 5093; CHECK-NEXT: ret 5094entry: 5095 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 5096 %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) 5097 ret <vscale x 8 x i16> %1 5098} 5099 5100define <vscale x 8 x i16> @test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 5101; CHECK-LABEL: test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i32: 5102; CHECK: # %bb.0: # %entry 5103; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5104; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8, v0.t 5105; CHECK-NEXT: vmv2r.v v8, v14 5106; CHECK-NEXT: ret 5107entry: 5108 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 5109 %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) 5110 ret <vscale x 8 x i16> %1 5111} 5112 5113declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i64>, i64, i64) 5114declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 5115 5116define <vscale x 8 x i16> @test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 5117; CHECK-LABEL: test_vluxseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i64: 5118; CHECK: # %bb.0: # %entry 5119; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5120; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8 5121; CHECK-NEXT: vmv2r.v v8, v18 5122; CHECK-NEXT: ret 5123entry: 5124 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 5125 %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) 5126 ret <vscale x 8 x i16> %1 5127} 5128 5129define <vscale x 8 x i16> @test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 5130; CHECK-LABEL: test_vluxseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t_nxv8i64: 5131; CHECK: # %bb.0: # %entry 5132; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 5133; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8, v0.t 5134; CHECK-NEXT: vmv2r.v v8, v18 5135; CHECK-NEXT: ret 5136entry: 5137 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 5138 %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) 5139 ret <vscale x 8 x i16> %1 5140} 5141 5142declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i8>, i64, i64) 5143declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 5144 5145define <vscale x 1 x i16> @test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 5146; CHECK-LABEL: test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i8: 5147; CHECK: # %bb.0: # %entry 5148; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5149; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 5150; CHECK-NEXT: vmv1r.v v8, v10 5151; CHECK-NEXT: ret 5152entry: 5153 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 5154 %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) 5155 ret <vscale x 1 x i16> %1 5156} 5157 5158define <vscale x 1 x i16> @test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5159; CHECK-LABEL: test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i8: 5160; CHECK: # %bb.0: # %entry 5161; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5162; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 5163; CHECK-NEXT: vmv1r.v v8, v10 5164; CHECK-NEXT: ret 5165entry: 5166 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5167 %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) 5168 ret <vscale x 1 x i16> %1 5169} 5170 5171declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i16>, i64, i64) 5172declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 5173 5174define <vscale x 1 x i16> @test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 5175; CHECK-LABEL: test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i16: 5176; CHECK: # %bb.0: # %entry 5177; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5178; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 5179; CHECK-NEXT: vmv1r.v v8, v10 5180; CHECK-NEXT: ret 5181entry: 5182 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 5183 %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) 5184 ret <vscale x 1 x i16> %1 5185} 5186 5187define <vscale x 1 x i16> @test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5188; CHECK-LABEL: test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i16: 5189; CHECK: # %bb.0: # %entry 5190; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5191; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 5192; CHECK-NEXT: vmv1r.v v8, v10 5193; CHECK-NEXT: ret 5194entry: 5195 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5196 %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) 5197 ret <vscale x 1 x i16> %1 5198} 5199 5200declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i32>, i64, i64) 5201declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 5202 5203define <vscale x 1 x i16> @test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 5204; CHECK-LABEL: test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i32: 5205; CHECK: # %bb.0: # %entry 5206; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5207; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 5208; CHECK-NEXT: vmv1r.v v8, v10 5209; CHECK-NEXT: ret 5210entry: 5211 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 5212 %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) 5213 ret <vscale x 1 x i16> %1 5214} 5215 5216define <vscale x 1 x i16> @test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5217; CHECK-LABEL: test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i32: 5218; CHECK: # %bb.0: # %entry 5219; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5220; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 5221; CHECK-NEXT: vmv1r.v v8, v10 5222; CHECK-NEXT: ret 5223entry: 5224 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5225 %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) 5226 ret <vscale x 1 x i16> %1 5227} 5228 5229declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i64>, i64, i64) 5230declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 5231 5232define <vscale x 1 x i16> @test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 5233; CHECK-LABEL: test_vluxseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i64: 5234; CHECK: # %bb.0: # %entry 5235; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5236; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 5237; CHECK-NEXT: vmv1r.v v8, v10 5238; CHECK-NEXT: ret 5239entry: 5240 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 5241 %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) 5242 ret <vscale x 1 x i16> %1 5243} 5244 5245define <vscale x 1 x i16> @test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5246; CHECK-LABEL: test_vluxseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t_nxv1i64: 5247; CHECK: # %bb.0: # %entry 5248; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5249; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 5250; CHECK-NEXT: vmv1r.v v8, v10 5251; CHECK-NEXT: ret 5252entry: 5253 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5254 %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) 5255 ret <vscale x 1 x i16> %1 5256} 5257 5258declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i8>, i64, i64) 5259declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 5260 5261define <vscale x 2 x i16> @test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 5262; CHECK-LABEL: test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i8: 5263; CHECK: # %bb.0: # %entry 5264; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5265; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 5266; CHECK-NEXT: vmv1r.v v8, v10 5267; CHECK-NEXT: ret 5268entry: 5269 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 5270 %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) 5271 ret <vscale x 2 x i16> %1 5272} 5273 5274define <vscale x 2 x i16> @test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5275; CHECK-LABEL: test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i8: 5276; CHECK: # %bb.0: # %entry 5277; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5278; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 5279; CHECK-NEXT: vmv1r.v v8, v10 5280; CHECK-NEXT: ret 5281entry: 5282 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5283 %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) 5284 ret <vscale x 2 x i16> %1 5285} 5286 5287declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i16>, i64, i64) 5288declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 5289 5290define <vscale x 2 x i16> @test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 5291; CHECK-LABEL: test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i16: 5292; CHECK: # %bb.0: # %entry 5293; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5294; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 5295; CHECK-NEXT: vmv1r.v v8, v10 5296; CHECK-NEXT: ret 5297entry: 5298 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 5299 %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) 5300 ret <vscale x 2 x i16> %1 5301} 5302 5303define <vscale x 2 x i16> @test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5304; CHECK-LABEL: test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i16: 5305; CHECK: # %bb.0: # %entry 5306; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5307; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 5308; CHECK-NEXT: vmv1r.v v8, v10 5309; CHECK-NEXT: ret 5310entry: 5311 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5312 %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) 5313 ret <vscale x 2 x i16> %1 5314} 5315 5316declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i32>, i64, i64) 5317declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 5318 5319define <vscale x 2 x i16> @test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 5320; CHECK-LABEL: test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i32: 5321; CHECK: # %bb.0: # %entry 5322; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5323; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 5324; CHECK-NEXT: vmv1r.v v8, v10 5325; CHECK-NEXT: ret 5326entry: 5327 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 5328 %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) 5329 ret <vscale x 2 x i16> %1 5330} 5331 5332define <vscale x 2 x i16> @test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5333; CHECK-LABEL: test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i32: 5334; CHECK: # %bb.0: # %entry 5335; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5336; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 5337; CHECK-NEXT: vmv1r.v v8, v10 5338; CHECK-NEXT: ret 5339entry: 5340 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5341 %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) 5342 ret <vscale x 2 x i16> %1 5343} 5344 5345declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i64>, i64, i64) 5346declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 5347 5348define <vscale x 2 x i16> @test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 5349; CHECK-LABEL: test_vluxseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i64: 5350; CHECK: # %bb.0: # %entry 5351; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5352; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8 5353; CHECK-NEXT: vmv1r.v v8, v11 5354; CHECK-NEXT: ret 5355entry: 5356 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 5357 %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) 5358 ret <vscale x 2 x i16> %1 5359} 5360 5361define <vscale x 2 x i16> @test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5362; CHECK-LABEL: test_vluxseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t_nxv2i64: 5363; CHECK: # %bb.0: # %entry 5364; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5365; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8, v0.t 5366; CHECK-NEXT: vmv1r.v v8, v11 5367; CHECK-NEXT: ret 5368entry: 5369 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5370 %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) 5371 ret <vscale x 2 x i16> %1 5372} 5373 5374declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i8>, i64, i64) 5375declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 5376 5377define <vscale x 4 x i16> @test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 5378; CHECK-LABEL: test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i8: 5379; CHECK: # %bb.0: # %entry 5380; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5381; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 5382; CHECK-NEXT: vmv1r.v v8, v10 5383; CHECK-NEXT: ret 5384entry: 5385 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 5386 %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) 5387 ret <vscale x 4 x i16> %1 5388} 5389 5390define <vscale x 4 x i16> @test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5391; CHECK-LABEL: test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i8: 5392; CHECK: # %bb.0: # %entry 5393; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5394; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 5395; CHECK-NEXT: vmv1r.v v8, v10 5396; CHECK-NEXT: ret 5397entry: 5398 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5399 %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) 5400 ret <vscale x 4 x i16> %1 5401} 5402 5403declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i16>, i64, i64) 5404declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 5405 5406define <vscale x 4 x i16> @test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 5407; CHECK-LABEL: test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i16: 5408; CHECK: # %bb.0: # %entry 5409; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5410; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 5411; CHECK-NEXT: vmv1r.v v8, v10 5412; CHECK-NEXT: ret 5413entry: 5414 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 5415 %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) 5416 ret <vscale x 4 x i16> %1 5417} 5418 5419define <vscale x 4 x i16> @test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5420; CHECK-LABEL: test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i16: 5421; CHECK: # %bb.0: # %entry 5422; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5423; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 5424; CHECK-NEXT: vmv1r.v v8, v10 5425; CHECK-NEXT: ret 5426entry: 5427 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5428 %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) 5429 ret <vscale x 4 x i16> %1 5430} 5431 5432declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i32>, i64, i64) 5433declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 5434 5435define <vscale x 4 x i16> @test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 5436; CHECK-LABEL: test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i32: 5437; CHECK: # %bb.0: # %entry 5438; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5439; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8 5440; CHECK-NEXT: vmv1r.v v8, v11 5441; CHECK-NEXT: ret 5442entry: 5443 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 5444 %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) 5445 ret <vscale x 4 x i16> %1 5446} 5447 5448define <vscale x 4 x i16> @test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5449; CHECK-LABEL: test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i32: 5450; CHECK: # %bb.0: # %entry 5451; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5452; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8, v0.t 5453; CHECK-NEXT: vmv1r.v v8, v11 5454; CHECK-NEXT: ret 5455entry: 5456 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5457 %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) 5458 ret <vscale x 4 x i16> %1 5459} 5460 5461declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i64>, i64, i64) 5462declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 5463 5464define <vscale x 4 x i16> @test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 5465; CHECK-LABEL: test_vluxseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i64: 5466; CHECK: # %bb.0: # %entry 5467; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5468; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8 5469; CHECK-NEXT: vmv1r.v v8, v13 5470; CHECK-NEXT: ret 5471entry: 5472 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 5473 %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) 5474 ret <vscale x 4 x i16> %1 5475} 5476 5477define <vscale x 4 x i16> @test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5478; CHECK-LABEL: test_vluxseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t_nxv4i64: 5479; CHECK: # %bb.0: # %entry 5480; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5481; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8, v0.t 5482; CHECK-NEXT: vmv1r.v v8, v13 5483; CHECK-NEXT: ret 5484entry: 5485 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5486 %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) 5487 ret <vscale x 4 x i16> %1 5488} 5489 5490declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i8>, i64, i64) 5491declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 5492 5493define <vscale x 1 x i16> @test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 5494; CHECK-LABEL: test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i8: 5495; CHECK: # %bb.0: # %entry 5496; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5497; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 5498; CHECK-NEXT: vmv1r.v v8, v10 5499; CHECK-NEXT: ret 5500entry: 5501 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 5502 %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) 5503 ret <vscale x 1 x i16> %1 5504} 5505 5506define <vscale x 1 x i16> @test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5507; CHECK-LABEL: test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i8: 5508; CHECK: # %bb.0: # %entry 5509; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5510; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 5511; CHECK-NEXT: vmv1r.v v8, v10 5512; CHECK-NEXT: ret 5513entry: 5514 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5515 %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) 5516 ret <vscale x 1 x i16> %1 5517} 5518 5519declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i16>, i64, i64) 5520declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 5521 5522define <vscale x 1 x i16> @test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 5523; CHECK-LABEL: test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i16: 5524; CHECK: # %bb.0: # %entry 5525; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5526; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 5527; CHECK-NEXT: vmv1r.v v8, v10 5528; CHECK-NEXT: ret 5529entry: 5530 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 5531 %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) 5532 ret <vscale x 1 x i16> %1 5533} 5534 5535define <vscale x 1 x i16> @test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5536; CHECK-LABEL: test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i16: 5537; CHECK: # %bb.0: # %entry 5538; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5539; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 5540; CHECK-NEXT: vmv1r.v v8, v10 5541; CHECK-NEXT: ret 5542entry: 5543 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5544 %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) 5545 ret <vscale x 1 x i16> %1 5546} 5547 5548declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i32>, i64, i64) 5549declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 5550 5551define <vscale x 1 x i16> @test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 5552; CHECK-LABEL: test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i32: 5553; CHECK: # %bb.0: # %entry 5554; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5555; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 5556; CHECK-NEXT: vmv1r.v v8, v10 5557; CHECK-NEXT: ret 5558entry: 5559 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 5560 %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) 5561 ret <vscale x 1 x i16> %1 5562} 5563 5564define <vscale x 1 x i16> @test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5565; CHECK-LABEL: test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i32: 5566; CHECK: # %bb.0: # %entry 5567; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5568; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 5569; CHECK-NEXT: vmv1r.v v8, v10 5570; CHECK-NEXT: ret 5571entry: 5572 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5573 %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) 5574 ret <vscale x 1 x i16> %1 5575} 5576 5577declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i64>, i64, i64) 5578declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 5579 5580define <vscale x 1 x i16> @test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 5581; CHECK-LABEL: test_vluxseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i64: 5582; CHECK: # %bb.0: # %entry 5583; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5584; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 5585; CHECK-NEXT: vmv1r.v v8, v10 5586; CHECK-NEXT: ret 5587entry: 5588 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 5589 %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) 5590 ret <vscale x 1 x i16> %1 5591} 5592 5593define <vscale x 1 x i16> @test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5594; CHECK-LABEL: test_vluxseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t_nxv1i64: 5595; CHECK: # %bb.0: # %entry 5596; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5597; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 5598; CHECK-NEXT: vmv1r.v v8, v10 5599; CHECK-NEXT: ret 5600entry: 5601 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5602 %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) 5603 ret <vscale x 1 x i16> %1 5604} 5605 5606declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i8>, i64, i64) 5607declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 5608 5609define <vscale x 2 x i16> @test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 5610; CHECK-LABEL: test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i8: 5611; CHECK: # %bb.0: # %entry 5612; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5613; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 5614; CHECK-NEXT: vmv1r.v v8, v10 5615; CHECK-NEXT: ret 5616entry: 5617 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 5618 %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) 5619 ret <vscale x 2 x i16> %1 5620} 5621 5622define <vscale x 2 x i16> @test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5623; CHECK-LABEL: test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i8: 5624; CHECK: # %bb.0: # %entry 5625; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5626; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 5627; CHECK-NEXT: vmv1r.v v8, v10 5628; CHECK-NEXT: ret 5629entry: 5630 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5631 %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) 5632 ret <vscale x 2 x i16> %1 5633} 5634 5635declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i16>, i64, i64) 5636declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 5637 5638define <vscale x 2 x i16> @test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 5639; CHECK-LABEL: test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i16: 5640; CHECK: # %bb.0: # %entry 5641; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5642; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 5643; CHECK-NEXT: vmv1r.v v8, v10 5644; CHECK-NEXT: ret 5645entry: 5646 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 5647 %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) 5648 ret <vscale x 2 x i16> %1 5649} 5650 5651define <vscale x 2 x i16> @test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5652; CHECK-LABEL: test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i16: 5653; CHECK: # %bb.0: # %entry 5654; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5655; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 5656; CHECK-NEXT: vmv1r.v v8, v10 5657; CHECK-NEXT: ret 5658entry: 5659 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5660 %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) 5661 ret <vscale x 2 x i16> %1 5662} 5663 5664declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i32>, i64, i64) 5665declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 5666 5667define <vscale x 2 x i16> @test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 5668; CHECK-LABEL: test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i32: 5669; CHECK: # %bb.0: # %entry 5670; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5671; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 5672; CHECK-NEXT: vmv1r.v v8, v10 5673; CHECK-NEXT: ret 5674entry: 5675 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 5676 %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) 5677 ret <vscale x 2 x i16> %1 5678} 5679 5680define <vscale x 2 x i16> @test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5681; CHECK-LABEL: test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i32: 5682; CHECK: # %bb.0: # %entry 5683; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5684; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 5685; CHECK-NEXT: vmv1r.v v8, v10 5686; CHECK-NEXT: ret 5687entry: 5688 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5689 %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) 5690 ret <vscale x 2 x i16> %1 5691} 5692 5693declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i64>, i64, i64) 5694declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 5695 5696define <vscale x 2 x i16> @test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 5697; CHECK-LABEL: test_vluxseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i64: 5698; CHECK: # %bb.0: # %entry 5699; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5700; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8 5701; CHECK-NEXT: vmv1r.v v8, v11 5702; CHECK-NEXT: ret 5703entry: 5704 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 5705 %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) 5706 ret <vscale x 2 x i16> %1 5707} 5708 5709define <vscale x 2 x i16> @test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5710; CHECK-LABEL: test_vluxseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t_nxv2i64: 5711; CHECK: # %bb.0: # %entry 5712; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5713; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8, v0.t 5714; CHECK-NEXT: vmv1r.v v8, v11 5715; CHECK-NEXT: ret 5716entry: 5717 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5718 %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) 5719 ret <vscale x 2 x i16> %1 5720} 5721 5722declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i8>, i64, i64) 5723declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 5724 5725define <vscale x 4 x i16> @test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 5726; CHECK-LABEL: test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i8: 5727; CHECK: # %bb.0: # %entry 5728; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5729; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 5730; CHECK-NEXT: vmv1r.v v8, v10 5731; CHECK-NEXT: ret 5732entry: 5733 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 5734 %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) 5735 ret <vscale x 4 x i16> %1 5736} 5737 5738define <vscale x 4 x i16> @test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5739; CHECK-LABEL: test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i8: 5740; CHECK: # %bb.0: # %entry 5741; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5742; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 5743; CHECK-NEXT: vmv1r.v v8, v10 5744; CHECK-NEXT: ret 5745entry: 5746 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5747 %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) 5748 ret <vscale x 4 x i16> %1 5749} 5750 5751declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i16>, i64, i64) 5752declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 5753 5754define <vscale x 4 x i16> @test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 5755; CHECK-LABEL: test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i16: 5756; CHECK: # %bb.0: # %entry 5757; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5758; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 5759; CHECK-NEXT: vmv1r.v v8, v10 5760; CHECK-NEXT: ret 5761entry: 5762 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 5763 %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) 5764 ret <vscale x 4 x i16> %1 5765} 5766 5767define <vscale x 4 x i16> @test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5768; CHECK-LABEL: test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i16: 5769; CHECK: # %bb.0: # %entry 5770; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5771; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 5772; CHECK-NEXT: vmv1r.v v8, v10 5773; CHECK-NEXT: ret 5774entry: 5775 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5776 %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) 5777 ret <vscale x 4 x i16> %1 5778} 5779 5780declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i32>, i64, i64) 5781declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 5782 5783define <vscale x 4 x i16> @test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 5784; CHECK-LABEL: test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i32: 5785; CHECK: # %bb.0: # %entry 5786; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5787; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8 5788; CHECK-NEXT: vmv1r.v v8, v11 5789; CHECK-NEXT: ret 5790entry: 5791 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 5792 %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) 5793 ret <vscale x 4 x i16> %1 5794} 5795 5796define <vscale x 4 x i16> @test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5797; CHECK-LABEL: test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i32: 5798; CHECK: # %bb.0: # %entry 5799; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5800; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8, v0.t 5801; CHECK-NEXT: vmv1r.v v8, v11 5802; CHECK-NEXT: ret 5803entry: 5804 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5805 %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) 5806 ret <vscale x 4 x i16> %1 5807} 5808 5809declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i64>, i64, i64) 5810declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 5811 5812define <vscale x 4 x i16> @test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 5813; CHECK-LABEL: test_vluxseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i64: 5814; CHECK: # %bb.0: # %entry 5815; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5816; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8 5817; CHECK-NEXT: vmv1r.v v8, v13 5818; CHECK-NEXT: ret 5819entry: 5820 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 5821 %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) 5822 ret <vscale x 4 x i16> %1 5823} 5824 5825define <vscale x 4 x i16> @test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 5826; CHECK-LABEL: test_vluxseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t_nxv4i64: 5827; CHECK: # %bb.0: # %entry 5828; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 5829; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8, v0.t 5830; CHECK-NEXT: vmv1r.v v8, v13 5831; CHECK-NEXT: ret 5832entry: 5833 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 5834 %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) 5835 ret <vscale x 4 x i16> %1 5836} 5837 5838declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i8>, i64, i64) 5839declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 5840 5841define <vscale x 1 x i16> @test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 5842; CHECK-LABEL: test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i8: 5843; CHECK: # %bb.0: # %entry 5844; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5845; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 5846; CHECK-NEXT: vmv1r.v v8, v10 5847; CHECK-NEXT: ret 5848entry: 5849 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 5850 %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) 5851 ret <vscale x 1 x i16> %1 5852} 5853 5854define <vscale x 1 x i16> @test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5855; CHECK-LABEL: test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i8: 5856; CHECK: # %bb.0: # %entry 5857; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5858; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 5859; CHECK-NEXT: vmv1r.v v8, v10 5860; CHECK-NEXT: ret 5861entry: 5862 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5863 %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) 5864 ret <vscale x 1 x i16> %1 5865} 5866 5867declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i16>, i64, i64) 5868declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 5869 5870define <vscale x 1 x i16> @test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 5871; CHECK-LABEL: test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i16: 5872; CHECK: # %bb.0: # %entry 5873; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5874; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 5875; CHECK-NEXT: vmv1r.v v8, v10 5876; CHECK-NEXT: ret 5877entry: 5878 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 5879 %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) 5880 ret <vscale x 1 x i16> %1 5881} 5882 5883define <vscale x 1 x i16> @test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5884; CHECK-LABEL: test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i16: 5885; CHECK: # %bb.0: # %entry 5886; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5887; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 5888; CHECK-NEXT: vmv1r.v v8, v10 5889; CHECK-NEXT: ret 5890entry: 5891 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5892 %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) 5893 ret <vscale x 1 x i16> %1 5894} 5895 5896declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i32>, i64, i64) 5897declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 5898 5899define <vscale x 1 x i16> @test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 5900; CHECK-LABEL: test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i32: 5901; CHECK: # %bb.0: # %entry 5902; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5903; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 5904; CHECK-NEXT: vmv1r.v v8, v10 5905; CHECK-NEXT: ret 5906entry: 5907 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 5908 %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) 5909 ret <vscale x 1 x i16> %1 5910} 5911 5912define <vscale x 1 x i16> @test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5913; CHECK-LABEL: test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i32: 5914; CHECK: # %bb.0: # %entry 5915; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5916; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 5917; CHECK-NEXT: vmv1r.v v8, v10 5918; CHECK-NEXT: ret 5919entry: 5920 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5921 %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) 5922 ret <vscale x 1 x i16> %1 5923} 5924 5925declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i64>, i64, i64) 5926declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 5927 5928define <vscale x 1 x i16> @test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 5929; CHECK-LABEL: test_vluxseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i64: 5930; CHECK: # %bb.0: # %entry 5931; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5932; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 5933; CHECK-NEXT: vmv1r.v v8, v10 5934; CHECK-NEXT: ret 5935entry: 5936 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 5937 %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) 5938 ret <vscale x 1 x i16> %1 5939} 5940 5941define <vscale x 1 x i16> @test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 5942; CHECK-LABEL: test_vluxseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t_nxv1i64: 5943; CHECK: # %bb.0: # %entry 5944; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 5945; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 5946; CHECK-NEXT: vmv1r.v v8, v10 5947; CHECK-NEXT: ret 5948entry: 5949 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 5950 %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) 5951 ret <vscale x 1 x i16> %1 5952} 5953 5954declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i8>, i64, i64) 5955declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 5956 5957define <vscale x 2 x i16> @test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 5958; CHECK-LABEL: test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i8: 5959; CHECK: # %bb.0: # %entry 5960; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5961; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 5962; CHECK-NEXT: vmv1r.v v8, v10 5963; CHECK-NEXT: ret 5964entry: 5965 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 5966 %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) 5967 ret <vscale x 2 x i16> %1 5968} 5969 5970define <vscale x 2 x i16> @test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 5971; CHECK-LABEL: test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i8: 5972; CHECK: # %bb.0: # %entry 5973; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5974; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 5975; CHECK-NEXT: vmv1r.v v8, v10 5976; CHECK-NEXT: ret 5977entry: 5978 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 5979 %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) 5980 ret <vscale x 2 x i16> %1 5981} 5982 5983declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i16>, i64, i64) 5984declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 5985 5986define <vscale x 2 x i16> @test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 5987; CHECK-LABEL: test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i16: 5988; CHECK: # %bb.0: # %entry 5989; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 5990; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 5991; CHECK-NEXT: vmv1r.v v8, v10 5992; CHECK-NEXT: ret 5993entry: 5994 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 5995 %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) 5996 ret <vscale x 2 x i16> %1 5997} 5998 5999define <vscale x 2 x i16> @test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6000; CHECK-LABEL: test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i16: 6001; CHECK: # %bb.0: # %entry 6002; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6003; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 6004; CHECK-NEXT: vmv1r.v v8, v10 6005; CHECK-NEXT: ret 6006entry: 6007 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 6008 %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) 6009 ret <vscale x 2 x i16> %1 6010} 6011 6012declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i32>, i64, i64) 6013declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 6014 6015define <vscale x 2 x i16> @test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 6016; CHECK-LABEL: test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i32: 6017; CHECK: # %bb.0: # %entry 6018; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6019; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 6020; CHECK-NEXT: vmv1r.v v8, v10 6021; CHECK-NEXT: ret 6022entry: 6023 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 6024 %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) 6025 ret <vscale x 2 x i16> %1 6026} 6027 6028define <vscale x 2 x i16> @test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6029; CHECK-LABEL: test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i32: 6030; CHECK: # %bb.0: # %entry 6031; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6032; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 6033; CHECK-NEXT: vmv1r.v v8, v10 6034; CHECK-NEXT: ret 6035entry: 6036 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 6037 %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) 6038 ret <vscale x 2 x i16> %1 6039} 6040 6041declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i64>, i64, i64) 6042declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 6043 6044define <vscale x 2 x i16> @test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 6045; CHECK-LABEL: test_vluxseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i64: 6046; CHECK: # %bb.0: # %entry 6047; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6048; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8 6049; CHECK-NEXT: vmv1r.v v8, v11 6050; CHECK-NEXT: ret 6051entry: 6052 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 6053 %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) 6054 ret <vscale x 2 x i16> %1 6055} 6056 6057define <vscale x 2 x i16> @test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6058; CHECK-LABEL: test_vluxseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t_nxv2i64: 6059; CHECK: # %bb.0: # %entry 6060; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6061; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8, v0.t 6062; CHECK-NEXT: vmv1r.v v8, v11 6063; CHECK-NEXT: ret 6064entry: 6065 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 6066 %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) 6067 ret <vscale x 2 x i16> %1 6068} 6069 6070declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i8>, i64, i64) 6071declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 6072 6073define <vscale x 4 x i16> @test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 6074; CHECK-LABEL: test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i8: 6075; CHECK: # %bb.0: # %entry 6076; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6077; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 6078; CHECK-NEXT: vmv1r.v v8, v10 6079; CHECK-NEXT: ret 6080entry: 6081 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 6082 %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) 6083 ret <vscale x 4 x i16> %1 6084} 6085 6086define <vscale x 4 x i16> @test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6087; CHECK-LABEL: test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i8: 6088; CHECK: # %bb.0: # %entry 6089; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6090; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 6091; CHECK-NEXT: vmv1r.v v8, v10 6092; CHECK-NEXT: ret 6093entry: 6094 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6095 %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) 6096 ret <vscale x 4 x i16> %1 6097} 6098 6099declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i16>, i64, i64) 6100declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 6101 6102define <vscale x 4 x i16> @test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 6103; CHECK-LABEL: test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i16: 6104; CHECK: # %bb.0: # %entry 6105; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6106; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 6107; CHECK-NEXT: vmv1r.v v8, v10 6108; CHECK-NEXT: ret 6109entry: 6110 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 6111 %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) 6112 ret <vscale x 4 x i16> %1 6113} 6114 6115define <vscale x 4 x i16> @test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6116; CHECK-LABEL: test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i16: 6117; CHECK: # %bb.0: # %entry 6118; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6119; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 6120; CHECK-NEXT: vmv1r.v v8, v10 6121; CHECK-NEXT: ret 6122entry: 6123 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6124 %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) 6125 ret <vscale x 4 x i16> %1 6126} 6127 6128declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i32>, i64, i64) 6129declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 6130 6131define <vscale x 4 x i16> @test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 6132; CHECK-LABEL: test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i32: 6133; CHECK: # %bb.0: # %entry 6134; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6135; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8 6136; CHECK-NEXT: vmv1r.v v8, v11 6137; CHECK-NEXT: ret 6138entry: 6139 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 6140 %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) 6141 ret <vscale x 4 x i16> %1 6142} 6143 6144define <vscale x 4 x i16> @test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6145; CHECK-LABEL: test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i32: 6146; CHECK: # %bb.0: # %entry 6147; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6148; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8, v0.t 6149; CHECK-NEXT: vmv1r.v v8, v11 6150; CHECK-NEXT: ret 6151entry: 6152 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6153 %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) 6154 ret <vscale x 4 x i16> %1 6155} 6156 6157declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i64>, i64, i64) 6158declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 6159 6160define <vscale x 4 x i16> @test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 6161; CHECK-LABEL: test_vluxseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i64: 6162; CHECK: # %bb.0: # %entry 6163; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6164; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8 6165; CHECK-NEXT: vmv1r.v v8, v13 6166; CHECK-NEXT: ret 6167entry: 6168 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 6169 %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) 6170 ret <vscale x 4 x i16> %1 6171} 6172 6173define <vscale x 4 x i16> @test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6174; CHECK-LABEL: test_vluxseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t_nxv4i64: 6175; CHECK: # %bb.0: # %entry 6176; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6177; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8, v0.t 6178; CHECK-NEXT: vmv1r.v v8, v13 6179; CHECK-NEXT: ret 6180entry: 6181 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6182 %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) 6183 ret <vscale x 4 x i16> %1 6184} 6185 6186declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i8>, i64, i64) 6187declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 6188 6189define <vscale x 1 x i16> @test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 6190; CHECK-LABEL: test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i8: 6191; CHECK: # %bb.0: # %entry 6192; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6193; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 6194; CHECK-NEXT: vmv1r.v v8, v10 6195; CHECK-NEXT: ret 6196entry: 6197 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 6198 %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) 6199 ret <vscale x 1 x i16> %1 6200} 6201 6202define <vscale x 1 x i16> @test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6203; CHECK-LABEL: test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i8: 6204; CHECK: # %bb.0: # %entry 6205; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6206; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 6207; CHECK-NEXT: vmv1r.v v8, v10 6208; CHECK-NEXT: ret 6209entry: 6210 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 6211 %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) 6212 ret <vscale x 1 x i16> %1 6213} 6214 6215declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i16>, i64, i64) 6216declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 6217 6218define <vscale x 1 x i16> @test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 6219; CHECK-LABEL: test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i16: 6220; CHECK: # %bb.0: # %entry 6221; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6222; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 6223; CHECK-NEXT: vmv1r.v v8, v10 6224; CHECK-NEXT: ret 6225entry: 6226 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 6227 %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) 6228 ret <vscale x 1 x i16> %1 6229} 6230 6231define <vscale x 1 x i16> @test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6232; CHECK-LABEL: test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i16: 6233; CHECK: # %bb.0: # %entry 6234; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6235; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 6236; CHECK-NEXT: vmv1r.v v8, v10 6237; CHECK-NEXT: ret 6238entry: 6239 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 6240 %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) 6241 ret <vscale x 1 x i16> %1 6242} 6243 6244declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i32>, i64, i64) 6245declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 6246 6247define <vscale x 1 x i16> @test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 6248; CHECK-LABEL: test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i32: 6249; CHECK: # %bb.0: # %entry 6250; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6251; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 6252; CHECK-NEXT: vmv1r.v v8, v10 6253; CHECK-NEXT: ret 6254entry: 6255 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 6256 %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) 6257 ret <vscale x 1 x i16> %1 6258} 6259 6260define <vscale x 1 x i16> @test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6261; CHECK-LABEL: test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i32: 6262; CHECK: # %bb.0: # %entry 6263; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6264; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 6265; CHECK-NEXT: vmv1r.v v8, v10 6266; CHECK-NEXT: ret 6267entry: 6268 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 6269 %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) 6270 ret <vscale x 1 x i16> %1 6271} 6272 6273declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i64>, i64, i64) 6274declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 6275 6276define <vscale x 1 x i16> @test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 6277; CHECK-LABEL: test_vluxseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i64: 6278; CHECK: # %bb.0: # %entry 6279; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6280; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 6281; CHECK-NEXT: vmv1r.v v8, v10 6282; CHECK-NEXT: ret 6283entry: 6284 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 6285 %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) 6286 ret <vscale x 1 x i16> %1 6287} 6288 6289define <vscale x 1 x i16> @test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6290; CHECK-LABEL: test_vluxseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t_nxv1i64: 6291; CHECK: # %bb.0: # %entry 6292; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 6293; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 6294; CHECK-NEXT: vmv1r.v v8, v10 6295; CHECK-NEXT: ret 6296entry: 6297 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 6298 %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) 6299 ret <vscale x 1 x i16> %1 6300} 6301 6302declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i8>, i64, i64) 6303declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 6304 6305define <vscale x 2 x i16> @test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 6306; CHECK-LABEL: test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i8: 6307; CHECK: # %bb.0: # %entry 6308; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6309; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 6310; CHECK-NEXT: vmv1r.v v8, v10 6311; CHECK-NEXT: ret 6312entry: 6313 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 6314 %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) 6315 ret <vscale x 2 x i16> %1 6316} 6317 6318define <vscale x 2 x i16> @test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6319; CHECK-LABEL: test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i8: 6320; CHECK: # %bb.0: # %entry 6321; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6322; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 6323; CHECK-NEXT: vmv1r.v v8, v10 6324; CHECK-NEXT: ret 6325entry: 6326 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 6327 %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) 6328 ret <vscale x 2 x i16> %1 6329} 6330 6331declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i16>, i64, i64) 6332declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 6333 6334define <vscale x 2 x i16> @test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 6335; CHECK-LABEL: test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i16: 6336; CHECK: # %bb.0: # %entry 6337; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6338; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 6339; CHECK-NEXT: vmv1r.v v8, v10 6340; CHECK-NEXT: ret 6341entry: 6342 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 6343 %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) 6344 ret <vscale x 2 x i16> %1 6345} 6346 6347define <vscale x 2 x i16> @test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6348; CHECK-LABEL: test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i16: 6349; CHECK: # %bb.0: # %entry 6350; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6351; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 6352; CHECK-NEXT: vmv1r.v v8, v10 6353; CHECK-NEXT: ret 6354entry: 6355 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 6356 %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) 6357 ret <vscale x 2 x i16> %1 6358} 6359 6360declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i32>, i64, i64) 6361declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 6362 6363define <vscale x 2 x i16> @test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 6364; CHECK-LABEL: test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i32: 6365; CHECK: # %bb.0: # %entry 6366; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6367; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 6368; CHECK-NEXT: vmv1r.v v8, v10 6369; CHECK-NEXT: ret 6370entry: 6371 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 6372 %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) 6373 ret <vscale x 2 x i16> %1 6374} 6375 6376define <vscale x 2 x i16> @test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6377; CHECK-LABEL: test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i32: 6378; CHECK: # %bb.0: # %entry 6379; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6380; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 6381; CHECK-NEXT: vmv1r.v v8, v10 6382; CHECK-NEXT: ret 6383entry: 6384 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 6385 %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) 6386 ret <vscale x 2 x i16> %1 6387} 6388 6389declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i64>, i64, i64) 6390declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 6391 6392define <vscale x 2 x i16> @test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 6393; CHECK-LABEL: test_vluxseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i64: 6394; CHECK: # %bb.0: # %entry 6395; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6396; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8 6397; CHECK-NEXT: vmv1r.v v8, v11 6398; CHECK-NEXT: ret 6399entry: 6400 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 6401 %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) 6402 ret <vscale x 2 x i16> %1 6403} 6404 6405define <vscale x 2 x i16> @test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6406; CHECK-LABEL: test_vluxseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t_nxv2i64: 6407; CHECK: # %bb.0: # %entry 6408; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 6409; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8, v0.t 6410; CHECK-NEXT: vmv1r.v v8, v11 6411; CHECK-NEXT: ret 6412entry: 6413 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 6414 %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) 6415 ret <vscale x 2 x i16> %1 6416} 6417 6418declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i8>, i64, i64) 6419declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 6420 6421define <vscale x 4 x i16> @test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 6422; CHECK-LABEL: test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i8: 6423; CHECK: # %bb.0: # %entry 6424; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6425; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 6426; CHECK-NEXT: vmv1r.v v8, v10 6427; CHECK-NEXT: ret 6428entry: 6429 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 6430 %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) 6431 ret <vscale x 4 x i16> %1 6432} 6433 6434define <vscale x 4 x i16> @test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6435; CHECK-LABEL: test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i8: 6436; CHECK: # %bb.0: # %entry 6437; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6438; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 6439; CHECK-NEXT: vmv1r.v v8, v10 6440; CHECK-NEXT: ret 6441entry: 6442 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6443 %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) 6444 ret <vscale x 4 x i16> %1 6445} 6446 6447declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i16>, i64, i64) 6448declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 6449 6450define <vscale x 4 x i16> @test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 6451; CHECK-LABEL: test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i16: 6452; CHECK: # %bb.0: # %entry 6453; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6454; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 6455; CHECK-NEXT: vmv1r.v v8, v10 6456; CHECK-NEXT: ret 6457entry: 6458 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 6459 %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) 6460 ret <vscale x 4 x i16> %1 6461} 6462 6463define <vscale x 4 x i16> @test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6464; CHECK-LABEL: test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i16: 6465; CHECK: # %bb.0: # %entry 6466; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6467; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 6468; CHECK-NEXT: vmv1r.v v8, v10 6469; CHECK-NEXT: ret 6470entry: 6471 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6472 %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) 6473 ret <vscale x 4 x i16> %1 6474} 6475 6476declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i32>, i64, i64) 6477declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 6478 6479define <vscale x 4 x i16> @test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 6480; CHECK-LABEL: test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i32: 6481; CHECK: # %bb.0: # %entry 6482; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6483; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8 6484; CHECK-NEXT: vmv1r.v v8, v11 6485; CHECK-NEXT: ret 6486entry: 6487 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 6488 %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) 6489 ret <vscale x 4 x i16> %1 6490} 6491 6492define <vscale x 4 x i16> @test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6493; CHECK-LABEL: test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i32: 6494; CHECK: # %bb.0: # %entry 6495; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6496; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8, v0.t 6497; CHECK-NEXT: vmv1r.v v8, v11 6498; CHECK-NEXT: ret 6499entry: 6500 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6501 %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) 6502 ret <vscale x 4 x i16> %1 6503} 6504 6505declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i64>, i64, i64) 6506declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 6507 6508define <vscale x 4 x i16> @test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 6509; CHECK-LABEL: test_vluxseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i64: 6510; CHECK: # %bb.0: # %entry 6511; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6512; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8 6513; CHECK-NEXT: vmv1r.v v8, v13 6514; CHECK-NEXT: ret 6515entry: 6516 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 6517 %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) 6518 ret <vscale x 4 x i16> %1 6519} 6520 6521define <vscale x 4 x i16> @test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6522; CHECK-LABEL: test_vluxseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t_nxv4i64: 6523; CHECK: # %bb.0: # %entry 6524; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 6525; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8, v0.t 6526; CHECK-NEXT: vmv1r.v v8, v13 6527; CHECK-NEXT: ret 6528entry: 6529 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 6530 %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) 6531 ret <vscale x 4 x i16> %1 6532} 6533 6534declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i8>, i64, i64) 6535declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 6536 6537define <vscale x 1 x i32> @test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 6538; CHECK-LABEL: test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i8: 6539; CHECK: # %bb.0: # %entry 6540; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6541; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 6542; CHECK-NEXT: vmv1r.v v8, v10 6543; CHECK-NEXT: ret 6544entry: 6545 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 6546 %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) 6547 ret <vscale x 1 x i32> %1 6548} 6549 6550define <vscale x 1 x i32> @test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6551; CHECK-LABEL: test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i8: 6552; CHECK: # %bb.0: # %entry 6553; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6554; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 6555; CHECK-NEXT: vmv1r.v v8, v10 6556; CHECK-NEXT: ret 6557entry: 6558 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 6559 %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) 6560 ret <vscale x 1 x i32> %1 6561} 6562 6563declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i16>, i64, i64) 6564declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 6565 6566define <vscale x 1 x i32> @test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 6567; CHECK-LABEL: test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i16: 6568; CHECK: # %bb.0: # %entry 6569; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6570; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 6571; CHECK-NEXT: vmv1r.v v8, v10 6572; CHECK-NEXT: ret 6573entry: 6574 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 6575 %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) 6576 ret <vscale x 1 x i32> %1 6577} 6578 6579define <vscale x 1 x i32> @test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6580; CHECK-LABEL: test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i16: 6581; CHECK: # %bb.0: # %entry 6582; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6583; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 6584; CHECK-NEXT: vmv1r.v v8, v10 6585; CHECK-NEXT: ret 6586entry: 6587 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 6588 %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) 6589 ret <vscale x 1 x i32> %1 6590} 6591 6592declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i32>, i64, i64) 6593declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 6594 6595define <vscale x 1 x i32> @test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 6596; CHECK-LABEL: test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i32: 6597; CHECK: # %bb.0: # %entry 6598; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6599; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 6600; CHECK-NEXT: vmv1r.v v8, v10 6601; CHECK-NEXT: ret 6602entry: 6603 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 6604 %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) 6605 ret <vscale x 1 x i32> %1 6606} 6607 6608define <vscale x 1 x i32> @test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6609; CHECK-LABEL: test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i32: 6610; CHECK: # %bb.0: # %entry 6611; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6612; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 6613; CHECK-NEXT: vmv1r.v v8, v10 6614; CHECK-NEXT: ret 6615entry: 6616 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 6617 %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) 6618 ret <vscale x 1 x i32> %1 6619} 6620 6621declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i64>, i64, i64) 6622declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 6623 6624define <vscale x 1 x i32> @test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 6625; CHECK-LABEL: test_vluxseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i64: 6626; CHECK: # %bb.0: # %entry 6627; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6628; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 6629; CHECK-NEXT: vmv1r.v v8, v10 6630; CHECK-NEXT: ret 6631entry: 6632 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 6633 %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) 6634 ret <vscale x 1 x i32> %1 6635} 6636 6637define <vscale x 1 x i32> @test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 6638; CHECK-LABEL: test_vluxseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t_nxv1i64: 6639; CHECK: # %bb.0: # %entry 6640; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 6641; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 6642; CHECK-NEXT: vmv1r.v v8, v10 6643; CHECK-NEXT: ret 6644entry: 6645 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 6646 %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) 6647 ret <vscale x 1 x i32> %1 6648} 6649 6650declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i8>, i64, i64) 6651declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 6652 6653define <vscale x 2 x i32> @test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 6654; CHECK-LABEL: test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i8: 6655; CHECK: # %bb.0: # %entry 6656; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6657; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 6658; CHECK-NEXT: vmv1r.v v8, v10 6659; CHECK-NEXT: ret 6660entry: 6661 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 6662 %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) 6663 ret <vscale x 2 x i32> %1 6664} 6665 6666define <vscale x 2 x i32> @test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6667; CHECK-LABEL: test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i8: 6668; CHECK: # %bb.0: # %entry 6669; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6670; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 6671; CHECK-NEXT: vmv1r.v v8, v10 6672; CHECK-NEXT: ret 6673entry: 6674 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 6675 %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) 6676 ret <vscale x 2 x i32> %1 6677} 6678 6679declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i16>, i64, i64) 6680declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 6681 6682define <vscale x 2 x i32> @test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 6683; CHECK-LABEL: test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i16: 6684; CHECK: # %bb.0: # %entry 6685; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6686; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 6687; CHECK-NEXT: vmv1r.v v8, v10 6688; CHECK-NEXT: ret 6689entry: 6690 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 6691 %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) 6692 ret <vscale x 2 x i32> %1 6693} 6694 6695define <vscale x 2 x i32> @test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6696; CHECK-LABEL: test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i16: 6697; CHECK: # %bb.0: # %entry 6698; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6699; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 6700; CHECK-NEXT: vmv1r.v v8, v10 6701; CHECK-NEXT: ret 6702entry: 6703 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 6704 %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) 6705 ret <vscale x 2 x i32> %1 6706} 6707 6708declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i32>, i64, i64) 6709declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 6710 6711define <vscale x 2 x i32> @test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 6712; CHECK-LABEL: test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i32: 6713; CHECK: # %bb.0: # %entry 6714; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6715; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 6716; CHECK-NEXT: vmv1r.v v8, v10 6717; CHECK-NEXT: ret 6718entry: 6719 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 6720 %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) 6721 ret <vscale x 2 x i32> %1 6722} 6723 6724define <vscale x 2 x i32> @test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6725; CHECK-LABEL: test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i32: 6726; CHECK: # %bb.0: # %entry 6727; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6728; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 6729; CHECK-NEXT: vmv1r.v v8, v10 6730; CHECK-NEXT: ret 6731entry: 6732 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 6733 %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) 6734 ret <vscale x 2 x i32> %1 6735} 6736 6737declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i64>, i64, i64) 6738declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 6739 6740define <vscale x 2 x i32> @test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 6741; CHECK-LABEL: test_vluxseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i64: 6742; CHECK: # %bb.0: # %entry 6743; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6744; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 6745; CHECK-NEXT: vmv1r.v v8, v11 6746; CHECK-NEXT: ret 6747entry: 6748 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 6749 %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) 6750 ret <vscale x 2 x i32> %1 6751} 6752 6753define <vscale x 2 x i32> @test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 6754; CHECK-LABEL: test_vluxseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t_nxv2i64: 6755; CHECK: # %bb.0: # %entry 6756; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 6757; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 6758; CHECK-NEXT: vmv1r.v v8, v11 6759; CHECK-NEXT: ret 6760entry: 6761 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 6762 %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) 6763 ret <vscale x 2 x i32> %1 6764} 6765 6766declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i8>, i64, i64) 6767declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 6768 6769define <vscale x 4 x i32> @test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 6770; CHECK-LABEL: test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i8: 6771; CHECK: # %bb.0: # %entry 6772; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6773; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 6774; CHECK-NEXT: vmv2r.v v8, v12 6775; CHECK-NEXT: ret 6776entry: 6777 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 5) 6778 %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) 6779 ret <vscale x 4 x i32> %1 6780} 6781 6782define <vscale x 4 x i32> @test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6783; CHECK-LABEL: test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i8: 6784; CHECK: # %bb.0: # %entry 6785; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6786; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 6787; CHECK-NEXT: vmv2r.v v8, v12 6788; CHECK-NEXT: ret 6789entry: 6790 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 6791 %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) 6792 ret <vscale x 4 x i32> %1 6793} 6794 6795declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i16>, i64, i64) 6796declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 6797 6798define <vscale x 4 x i32> @test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 6799; CHECK-LABEL: test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i16: 6800; CHECK: # %bb.0: # %entry 6801; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6802; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 6803; CHECK-NEXT: vmv2r.v v8, v12 6804; CHECK-NEXT: ret 6805entry: 6806 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 5) 6807 %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) 6808 ret <vscale x 4 x i32> %1 6809} 6810 6811define <vscale x 4 x i32> @test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6812; CHECK-LABEL: test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i16: 6813; CHECK: # %bb.0: # %entry 6814; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6815; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 6816; CHECK-NEXT: vmv2r.v v8, v12 6817; CHECK-NEXT: ret 6818entry: 6819 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 6820 %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) 6821 ret <vscale x 4 x i32> %1 6822} 6823 6824declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i32>, i64, i64) 6825declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 6826 6827define <vscale x 4 x i32> @test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 6828; CHECK-LABEL: test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i32: 6829; CHECK: # %bb.0: # %entry 6830; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6831; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 6832; CHECK-NEXT: vmv2r.v v8, v12 6833; CHECK-NEXT: ret 6834entry: 6835 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 5) 6836 %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) 6837 ret <vscale x 4 x i32> %1 6838} 6839 6840define <vscale x 4 x i32> @test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6841; CHECK-LABEL: test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i32: 6842; CHECK: # %bb.0: # %entry 6843; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6844; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 6845; CHECK-NEXT: vmv2r.v v8, v12 6846; CHECK-NEXT: ret 6847entry: 6848 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 6849 %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) 6850 ret <vscale x 4 x i32> %1 6851} 6852 6853declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i64>, i64, i64) 6854declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 6855 6856define <vscale x 4 x i32> @test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 6857; CHECK-LABEL: test_vluxseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i64: 6858; CHECK: # %bb.0: # %entry 6859; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6860; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 6861; CHECK-NEXT: vmv2r.v v8, v14 6862; CHECK-NEXT: ret 6863entry: 6864 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 5) 6865 %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) 6866 ret <vscale x 4 x i32> %1 6867} 6868 6869define <vscale x 4 x i32> @test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 6870; CHECK-LABEL: test_vluxseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t_nxv4i64: 6871; CHECK: # %bb.0: # %entry 6872; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 6873; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 6874; CHECK-NEXT: vmv2r.v v8, v14 6875; CHECK-NEXT: ret 6876entry: 6877 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 6878 %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) 6879 ret <vscale x 4 x i32> %1 6880} 6881 6882declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i8>, i64, i64) 6883declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i8.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i64, i64, i64) 6884 6885define <vscale x 8 x i32> @test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 6886; CHECK-LABEL: test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i8: 6887; CHECK: # %bb.0: # %entry 6888; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6889; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 6890; CHECK-NEXT: vmv4r.v v8, v16 6891; CHECK-NEXT: ret 6892entry: 6893 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 5) 6894 %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) 6895 ret <vscale x 8 x i32> %1 6896} 6897 6898define <vscale x 8 x i32> @test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 6899; CHECK-LABEL: test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i8: 6900; CHECK: # %bb.0: # %entry 6901; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6902; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 6903; CHECK-NEXT: vmv4r.v v8, v16 6904; CHECK-NEXT: ret 6905entry: 6906 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 6907 %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) 6908 ret <vscale x 8 x i32> %1 6909} 6910 6911declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i16>, i64, i64) 6912declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i16.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i64, i64, i64) 6913 6914define <vscale x 8 x i32> @test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 6915; CHECK-LABEL: test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i16: 6916; CHECK: # %bb.0: # %entry 6917; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6918; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 6919; CHECK-NEXT: vmv4r.v v8, v16 6920; CHECK-NEXT: ret 6921entry: 6922 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 5) 6923 %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) 6924 ret <vscale x 8 x i32> %1 6925} 6926 6927define <vscale x 8 x i32> @test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 6928; CHECK-LABEL: test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i16: 6929; CHECK: # %bb.0: # %entry 6930; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6931; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 6932; CHECK-NEXT: vmv4r.v v8, v16 6933; CHECK-NEXT: ret 6934entry: 6935 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 6936 %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) 6937 ret <vscale x 8 x i32> %1 6938} 6939 6940declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i32>, i64, i64) 6941declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i32.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i64, i64, i64) 6942 6943define <vscale x 8 x i32> @test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 6944; CHECK-LABEL: test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i32: 6945; CHECK: # %bb.0: # %entry 6946; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6947; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 6948; CHECK-NEXT: vmv4r.v v8, v16 6949; CHECK-NEXT: ret 6950entry: 6951 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 5) 6952 %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) 6953 ret <vscale x 8 x i32> %1 6954} 6955 6956define <vscale x 8 x i32> @test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 6957; CHECK-LABEL: test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i32: 6958; CHECK: # %bb.0: # %entry 6959; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6960; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 6961; CHECK-NEXT: vmv4r.v v8, v16 6962; CHECK-NEXT: ret 6963entry: 6964 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 6965 %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) 6966 ret <vscale x 8 x i32> %1 6967} 6968 6969declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i64>, i64, i64) 6970declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i64.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 8 x i64>, <vscale x 8 x i1>, i64, i64, i64) 6971 6972define <vscale x 8 x i32> @test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 6973; CHECK-LABEL: test_vluxseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i64: 6974; CHECK: # %bb.0: # %entry 6975; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6976; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8 6977; CHECK-NEXT: vmv4r.v v8, v20 6978; CHECK-NEXT: ret 6979entry: 6980 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 5) 6981 %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) 6982 ret <vscale x 8 x i32> %1 6983} 6984 6985define <vscale x 8 x i32> @test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 6986; CHECK-LABEL: test_vluxseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t_nxv8i64: 6987; CHECK: # %bb.0: # %entry 6988; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 6989; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8, v0.t 6990; CHECK-NEXT: vmv4r.v v8, v20 6991; CHECK-NEXT: ret 6992entry: 6993 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 6994 %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) 6995 ret <vscale x 8 x i32> %1 6996} 6997 6998declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i8>, i64, i64) 6999declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 7000 7001define <vscale x 1 x i32> @test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 7002; CHECK-LABEL: test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i8: 7003; CHECK: # %bb.0: # %entry 7004; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7005; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 7006; CHECK-NEXT: vmv1r.v v8, v10 7007; CHECK-NEXT: ret 7008entry: 7009 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 7010 %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) 7011 ret <vscale x 1 x i32> %1 7012} 7013 7014define <vscale x 1 x i32> @test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7015; CHECK-LABEL: test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i8: 7016; CHECK: # %bb.0: # %entry 7017; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7018; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 7019; CHECK-NEXT: vmv1r.v v8, v10 7020; CHECK-NEXT: ret 7021entry: 7022 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7023 %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) 7024 ret <vscale x 1 x i32> %1 7025} 7026 7027declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i16>, i64, i64) 7028declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 7029 7030define <vscale x 1 x i32> @test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 7031; CHECK-LABEL: test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i16: 7032; CHECK: # %bb.0: # %entry 7033; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7034; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 7035; CHECK-NEXT: vmv1r.v v8, v10 7036; CHECK-NEXT: ret 7037entry: 7038 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 7039 %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) 7040 ret <vscale x 1 x i32> %1 7041} 7042 7043define <vscale x 1 x i32> @test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7044; CHECK-LABEL: test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i16: 7045; CHECK: # %bb.0: # %entry 7046; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7047; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 7048; CHECK-NEXT: vmv1r.v v8, v10 7049; CHECK-NEXT: ret 7050entry: 7051 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7052 %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) 7053 ret <vscale x 1 x i32> %1 7054} 7055 7056declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i32>, i64, i64) 7057declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 7058 7059define <vscale x 1 x i32> @test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 7060; CHECK-LABEL: test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i32: 7061; CHECK: # %bb.0: # %entry 7062; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7063; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 7064; CHECK-NEXT: vmv1r.v v8, v10 7065; CHECK-NEXT: ret 7066entry: 7067 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 7068 %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) 7069 ret <vscale x 1 x i32> %1 7070} 7071 7072define <vscale x 1 x i32> @test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7073; CHECK-LABEL: test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i32: 7074; CHECK: # %bb.0: # %entry 7075; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7076; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 7077; CHECK-NEXT: vmv1r.v v8, v10 7078; CHECK-NEXT: ret 7079entry: 7080 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7081 %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) 7082 ret <vscale x 1 x i32> %1 7083} 7084 7085declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i64>, i64, i64) 7086declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 7087 7088define <vscale x 1 x i32> @test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 7089; CHECK-LABEL: test_vluxseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i64: 7090; CHECK: # %bb.0: # %entry 7091; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7092; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 7093; CHECK-NEXT: vmv1r.v v8, v10 7094; CHECK-NEXT: ret 7095entry: 7096 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 7097 %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) 7098 ret <vscale x 1 x i32> %1 7099} 7100 7101define <vscale x 1 x i32> @test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7102; CHECK-LABEL: test_vluxseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t_nxv1i64: 7103; CHECK: # %bb.0: # %entry 7104; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7105; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 7106; CHECK-NEXT: vmv1r.v v8, v10 7107; CHECK-NEXT: ret 7108entry: 7109 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7110 %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) 7111 ret <vscale x 1 x i32> %1 7112} 7113 7114declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i8>, i64, i64) 7115declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 7116 7117define <vscale x 2 x i32> @test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 7118; CHECK-LABEL: test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i8: 7119; CHECK: # %bb.0: # %entry 7120; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7121; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 7122; CHECK-NEXT: vmv1r.v v8, v10 7123; CHECK-NEXT: ret 7124entry: 7125 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 7126 %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) 7127 ret <vscale x 2 x i32> %1 7128} 7129 7130define <vscale x 2 x i32> @test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7131; CHECK-LABEL: test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i8: 7132; CHECK: # %bb.0: # %entry 7133; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7134; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 7135; CHECK-NEXT: vmv1r.v v8, v10 7136; CHECK-NEXT: ret 7137entry: 7138 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7139 %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) 7140 ret <vscale x 2 x i32> %1 7141} 7142 7143declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i16>, i64, i64) 7144declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 7145 7146define <vscale x 2 x i32> @test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 7147; CHECK-LABEL: test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i16: 7148; CHECK: # %bb.0: # %entry 7149; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7150; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 7151; CHECK-NEXT: vmv1r.v v8, v10 7152; CHECK-NEXT: ret 7153entry: 7154 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 7155 %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) 7156 ret <vscale x 2 x i32> %1 7157} 7158 7159define <vscale x 2 x i32> @test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7160; CHECK-LABEL: test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i16: 7161; CHECK: # %bb.0: # %entry 7162; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7163; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 7164; CHECK-NEXT: vmv1r.v v8, v10 7165; CHECK-NEXT: ret 7166entry: 7167 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7168 %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) 7169 ret <vscale x 2 x i32> %1 7170} 7171 7172declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i32>, i64, i64) 7173declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 7174 7175define <vscale x 2 x i32> @test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 7176; CHECK-LABEL: test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i32: 7177; CHECK: # %bb.0: # %entry 7178; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7179; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 7180; CHECK-NEXT: vmv1r.v v8, v10 7181; CHECK-NEXT: ret 7182entry: 7183 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 7184 %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) 7185 ret <vscale x 2 x i32> %1 7186} 7187 7188define <vscale x 2 x i32> @test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7189; CHECK-LABEL: test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i32: 7190; CHECK: # %bb.0: # %entry 7191; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7192; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 7193; CHECK-NEXT: vmv1r.v v8, v10 7194; CHECK-NEXT: ret 7195entry: 7196 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7197 %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) 7198 ret <vscale x 2 x i32> %1 7199} 7200 7201declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i64>, i64, i64) 7202declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 7203 7204define <vscale x 2 x i32> @test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 7205; CHECK-LABEL: test_vluxseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i64: 7206; CHECK: # %bb.0: # %entry 7207; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7208; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 7209; CHECK-NEXT: vmv1r.v v8, v11 7210; CHECK-NEXT: ret 7211entry: 7212 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 7213 %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) 7214 ret <vscale x 2 x i32> %1 7215} 7216 7217define <vscale x 2 x i32> @test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7218; CHECK-LABEL: test_vluxseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t_nxv2i64: 7219; CHECK: # %bb.0: # %entry 7220; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7221; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 7222; CHECK-NEXT: vmv1r.v v8, v11 7223; CHECK-NEXT: ret 7224entry: 7225 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7226 %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) 7227 ret <vscale x 2 x i32> %1 7228} 7229 7230declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i8>, i64, i64) 7231declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 7232 7233define <vscale x 4 x i32> @test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 7234; CHECK-LABEL: test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i8: 7235; CHECK: # %bb.0: # %entry 7236; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7237; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 7238; CHECK-NEXT: vmv2r.v v8, v12 7239; CHECK-NEXT: ret 7240entry: 7241 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 5) 7242 %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) 7243 ret <vscale x 4 x i32> %1 7244} 7245 7246define <vscale x 4 x i32> @test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7247; CHECK-LABEL: test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i8: 7248; CHECK: # %bb.0: # %entry 7249; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7250; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 7251; CHECK-NEXT: vmv2r.v v8, v12 7252; CHECK-NEXT: ret 7253entry: 7254 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7255 %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) 7256 ret <vscale x 4 x i32> %1 7257} 7258 7259declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i16>, i64, i64) 7260declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 7261 7262define <vscale x 4 x i32> @test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 7263; CHECK-LABEL: test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i16: 7264; CHECK: # %bb.0: # %entry 7265; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7266; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 7267; CHECK-NEXT: vmv2r.v v8, v12 7268; CHECK-NEXT: ret 7269entry: 7270 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 5) 7271 %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) 7272 ret <vscale x 4 x i32> %1 7273} 7274 7275define <vscale x 4 x i32> @test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7276; CHECK-LABEL: test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i16: 7277; CHECK: # %bb.0: # %entry 7278; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7279; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 7280; CHECK-NEXT: vmv2r.v v8, v12 7281; CHECK-NEXT: ret 7282entry: 7283 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7284 %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) 7285 ret <vscale x 4 x i32> %1 7286} 7287 7288declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i32>, i64, i64) 7289declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 7290 7291define <vscale x 4 x i32> @test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 7292; CHECK-LABEL: test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i32: 7293; CHECK: # %bb.0: # %entry 7294; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7295; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 7296; CHECK-NEXT: vmv2r.v v8, v12 7297; CHECK-NEXT: ret 7298entry: 7299 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 5) 7300 %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) 7301 ret <vscale x 4 x i32> %1 7302} 7303 7304define <vscale x 4 x i32> @test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7305; CHECK-LABEL: test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i32: 7306; CHECK: # %bb.0: # %entry 7307; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7308; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 7309; CHECK-NEXT: vmv2r.v v8, v12 7310; CHECK-NEXT: ret 7311entry: 7312 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7313 %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) 7314 ret <vscale x 4 x i32> %1 7315} 7316 7317declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i64>, i64, i64) 7318declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 7319 7320define <vscale x 4 x i32> @test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 7321; CHECK-LABEL: test_vluxseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i64: 7322; CHECK: # %bb.0: # %entry 7323; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7324; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8 7325; CHECK-NEXT: vmv2r.v v8, v14 7326; CHECK-NEXT: ret 7327entry: 7328 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 5) 7329 %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) 7330 ret <vscale x 4 x i32> %1 7331} 7332 7333define <vscale x 4 x i32> @test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7334; CHECK-LABEL: test_vluxseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t_nxv4i64: 7335; CHECK: # %bb.0: # %entry 7336; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7337; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8, v0.t 7338; CHECK-NEXT: vmv2r.v v8, v14 7339; CHECK-NEXT: ret 7340entry: 7341 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7342 %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) 7343 ret <vscale x 4 x i32> %1 7344} 7345 7346declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i8>, i64, i64) 7347declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 7348 7349define <vscale x 1 x i32> @test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 7350; CHECK-LABEL: test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i8: 7351; CHECK: # %bb.0: # %entry 7352; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7353; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 7354; CHECK-NEXT: vmv1r.v v8, v10 7355; CHECK-NEXT: ret 7356entry: 7357 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 7358 %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) 7359 ret <vscale x 1 x i32> %1 7360} 7361 7362define <vscale x 1 x i32> @test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7363; CHECK-LABEL: test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i8: 7364; CHECK: # %bb.0: # %entry 7365; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7366; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 7367; CHECK-NEXT: vmv1r.v v8, v10 7368; CHECK-NEXT: ret 7369entry: 7370 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7371 %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) 7372 ret <vscale x 1 x i32> %1 7373} 7374 7375declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i16>, i64, i64) 7376declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 7377 7378define <vscale x 1 x i32> @test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 7379; CHECK-LABEL: test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i16: 7380; CHECK: # %bb.0: # %entry 7381; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7382; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 7383; CHECK-NEXT: vmv1r.v v8, v10 7384; CHECK-NEXT: ret 7385entry: 7386 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 7387 %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) 7388 ret <vscale x 1 x i32> %1 7389} 7390 7391define <vscale x 1 x i32> @test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7392; CHECK-LABEL: test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i16: 7393; CHECK: # %bb.0: # %entry 7394; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7395; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 7396; CHECK-NEXT: vmv1r.v v8, v10 7397; CHECK-NEXT: ret 7398entry: 7399 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7400 %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) 7401 ret <vscale x 1 x i32> %1 7402} 7403 7404declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i32>, i64, i64) 7405declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 7406 7407define <vscale x 1 x i32> @test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 7408; CHECK-LABEL: test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i32: 7409; CHECK: # %bb.0: # %entry 7410; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7411; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 7412; CHECK-NEXT: vmv1r.v v8, v10 7413; CHECK-NEXT: ret 7414entry: 7415 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 7416 %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) 7417 ret <vscale x 1 x i32> %1 7418} 7419 7420define <vscale x 1 x i32> @test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7421; CHECK-LABEL: test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i32: 7422; CHECK: # %bb.0: # %entry 7423; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7424; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 7425; CHECK-NEXT: vmv1r.v v8, v10 7426; CHECK-NEXT: ret 7427entry: 7428 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7429 %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) 7430 ret <vscale x 1 x i32> %1 7431} 7432 7433declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i64>, i64, i64) 7434declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 7435 7436define <vscale x 1 x i32> @test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 7437; CHECK-LABEL: test_vluxseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i64: 7438; CHECK: # %bb.0: # %entry 7439; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7440; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 7441; CHECK-NEXT: vmv1r.v v8, v10 7442; CHECK-NEXT: ret 7443entry: 7444 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 7445 %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) 7446 ret <vscale x 1 x i32> %1 7447} 7448 7449define <vscale x 1 x i32> @test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7450; CHECK-LABEL: test_vluxseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t_nxv1i64: 7451; CHECK: # %bb.0: # %entry 7452; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7453; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 7454; CHECK-NEXT: vmv1r.v v8, v10 7455; CHECK-NEXT: ret 7456entry: 7457 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7458 %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) 7459 ret <vscale x 1 x i32> %1 7460} 7461 7462declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i8>, i64, i64) 7463declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 7464 7465define <vscale x 2 x i32> @test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 7466; CHECK-LABEL: test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i8: 7467; CHECK: # %bb.0: # %entry 7468; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7469; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 7470; CHECK-NEXT: vmv1r.v v8, v10 7471; CHECK-NEXT: ret 7472entry: 7473 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 7474 %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) 7475 ret <vscale x 2 x i32> %1 7476} 7477 7478define <vscale x 2 x i32> @test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7479; CHECK-LABEL: test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i8: 7480; CHECK: # %bb.0: # %entry 7481; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7482; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 7483; CHECK-NEXT: vmv1r.v v8, v10 7484; CHECK-NEXT: ret 7485entry: 7486 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7487 %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) 7488 ret <vscale x 2 x i32> %1 7489} 7490 7491declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i16>, i64, i64) 7492declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 7493 7494define <vscale x 2 x i32> @test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 7495; CHECK-LABEL: test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i16: 7496; CHECK: # %bb.0: # %entry 7497; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7498; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 7499; CHECK-NEXT: vmv1r.v v8, v10 7500; CHECK-NEXT: ret 7501entry: 7502 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 7503 %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) 7504 ret <vscale x 2 x i32> %1 7505} 7506 7507define <vscale x 2 x i32> @test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7508; CHECK-LABEL: test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i16: 7509; CHECK: # %bb.0: # %entry 7510; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7511; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 7512; CHECK-NEXT: vmv1r.v v8, v10 7513; CHECK-NEXT: ret 7514entry: 7515 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7516 %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) 7517 ret <vscale x 2 x i32> %1 7518} 7519 7520declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i32>, i64, i64) 7521declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 7522 7523define <vscale x 2 x i32> @test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 7524; CHECK-LABEL: test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i32: 7525; CHECK: # %bb.0: # %entry 7526; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7527; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 7528; CHECK-NEXT: vmv1r.v v8, v10 7529; CHECK-NEXT: ret 7530entry: 7531 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 7532 %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) 7533 ret <vscale x 2 x i32> %1 7534} 7535 7536define <vscale x 2 x i32> @test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7537; CHECK-LABEL: test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i32: 7538; CHECK: # %bb.0: # %entry 7539; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7540; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 7541; CHECK-NEXT: vmv1r.v v8, v10 7542; CHECK-NEXT: ret 7543entry: 7544 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7545 %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) 7546 ret <vscale x 2 x i32> %1 7547} 7548 7549declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i64>, i64, i64) 7550declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 7551 7552define <vscale x 2 x i32> @test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 7553; CHECK-LABEL: test_vluxseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i64: 7554; CHECK: # %bb.0: # %entry 7555; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7556; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 7557; CHECK-NEXT: vmv1r.v v8, v11 7558; CHECK-NEXT: ret 7559entry: 7560 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 7561 %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) 7562 ret <vscale x 2 x i32> %1 7563} 7564 7565define <vscale x 2 x i32> @test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7566; CHECK-LABEL: test_vluxseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t_nxv2i64: 7567; CHECK: # %bb.0: # %entry 7568; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7569; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 7570; CHECK-NEXT: vmv1r.v v8, v11 7571; CHECK-NEXT: ret 7572entry: 7573 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7574 %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) 7575 ret <vscale x 2 x i32> %1 7576} 7577 7578declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i8>, i64, i64) 7579declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 7580 7581define <vscale x 4 x i32> @test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 7582; CHECK-LABEL: test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i8: 7583; CHECK: # %bb.0: # %entry 7584; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7585; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 7586; CHECK-NEXT: vmv2r.v v8, v12 7587; CHECK-NEXT: ret 7588entry: 7589 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 5) 7590 %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) 7591 ret <vscale x 4 x i32> %1 7592} 7593 7594define <vscale x 4 x i32> @test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7595; CHECK-LABEL: test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i8: 7596; CHECK: # %bb.0: # %entry 7597; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7598; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 7599; CHECK-NEXT: vmv2r.v v8, v12 7600; CHECK-NEXT: ret 7601entry: 7602 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7603 %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) 7604 ret <vscale x 4 x i32> %1 7605} 7606 7607declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i16>, i64, i64) 7608declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 7609 7610define <vscale x 4 x i32> @test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 7611; CHECK-LABEL: test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i16: 7612; CHECK: # %bb.0: # %entry 7613; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7614; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 7615; CHECK-NEXT: vmv2r.v v8, v12 7616; CHECK-NEXT: ret 7617entry: 7618 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 5) 7619 %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) 7620 ret <vscale x 4 x i32> %1 7621} 7622 7623define <vscale x 4 x i32> @test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7624; CHECK-LABEL: test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i16: 7625; CHECK: # %bb.0: # %entry 7626; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7627; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 7628; CHECK-NEXT: vmv2r.v v8, v12 7629; CHECK-NEXT: ret 7630entry: 7631 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7632 %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) 7633 ret <vscale x 4 x i32> %1 7634} 7635 7636declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i32>, i64, i64) 7637declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 7638 7639define <vscale x 4 x i32> @test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 7640; CHECK-LABEL: test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i32: 7641; CHECK: # %bb.0: # %entry 7642; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7643; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 7644; CHECK-NEXT: vmv2r.v v8, v12 7645; CHECK-NEXT: ret 7646entry: 7647 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 5) 7648 %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) 7649 ret <vscale x 4 x i32> %1 7650} 7651 7652define <vscale x 4 x i32> @test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7653; CHECK-LABEL: test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i32: 7654; CHECK: # %bb.0: # %entry 7655; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7656; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 7657; CHECK-NEXT: vmv2r.v v8, v12 7658; CHECK-NEXT: ret 7659entry: 7660 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7661 %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) 7662 ret <vscale x 4 x i32> %1 7663} 7664 7665declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i64>, i64, i64) 7666declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 7667 7668define <vscale x 4 x i32> @test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 7669; CHECK-LABEL: test_vluxseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i64: 7670; CHECK: # %bb.0: # %entry 7671; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7672; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8 7673; CHECK-NEXT: vmv2r.v v8, v14 7674; CHECK-NEXT: ret 7675entry: 7676 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 5) 7677 %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) 7678 ret <vscale x 4 x i32> %1 7679} 7680 7681define <vscale x 4 x i32> @test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 7682; CHECK-LABEL: test_vluxseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t_nxv4i64: 7683; CHECK: # %bb.0: # %entry 7684; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 7685; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8, v0.t 7686; CHECK-NEXT: vmv2r.v v8, v14 7687; CHECK-NEXT: ret 7688entry: 7689 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 7690 %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) 7691 ret <vscale x 4 x i32> %1 7692} 7693 7694declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i8>, i64, i64) 7695declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 7696 7697define <vscale x 1 x i32> @test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 7698; CHECK-LABEL: test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i8: 7699; CHECK: # %bb.0: # %entry 7700; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7701; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 7702; CHECK-NEXT: vmv1r.v v8, v10 7703; CHECK-NEXT: ret 7704entry: 7705 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 7706 %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) 7707 ret <vscale x 1 x i32> %1 7708} 7709 7710define <vscale x 1 x i32> @test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7711; CHECK-LABEL: test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i8: 7712; CHECK: # %bb.0: # %entry 7713; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7714; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 7715; CHECK-NEXT: vmv1r.v v8, v10 7716; CHECK-NEXT: ret 7717entry: 7718 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7719 %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) 7720 ret <vscale x 1 x i32> %1 7721} 7722 7723declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i16>, i64, i64) 7724declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 7725 7726define <vscale x 1 x i32> @test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 7727; CHECK-LABEL: test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i16: 7728; CHECK: # %bb.0: # %entry 7729; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7730; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 7731; CHECK-NEXT: vmv1r.v v8, v10 7732; CHECK-NEXT: ret 7733entry: 7734 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 7735 %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) 7736 ret <vscale x 1 x i32> %1 7737} 7738 7739define <vscale x 1 x i32> @test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7740; CHECK-LABEL: test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i16: 7741; CHECK: # %bb.0: # %entry 7742; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7743; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 7744; CHECK-NEXT: vmv1r.v v8, v10 7745; CHECK-NEXT: ret 7746entry: 7747 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7748 %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) 7749 ret <vscale x 1 x i32> %1 7750} 7751 7752declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i32>, i64, i64) 7753declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 7754 7755define <vscale x 1 x i32> @test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 7756; CHECK-LABEL: test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i32: 7757; CHECK: # %bb.0: # %entry 7758; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7759; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 7760; CHECK-NEXT: vmv1r.v v8, v10 7761; CHECK-NEXT: ret 7762entry: 7763 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 7764 %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) 7765 ret <vscale x 1 x i32> %1 7766} 7767 7768define <vscale x 1 x i32> @test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7769; CHECK-LABEL: test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i32: 7770; CHECK: # %bb.0: # %entry 7771; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7772; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 7773; CHECK-NEXT: vmv1r.v v8, v10 7774; CHECK-NEXT: ret 7775entry: 7776 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7777 %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) 7778 ret <vscale x 1 x i32> %1 7779} 7780 7781declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i64>, i64, i64) 7782declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 7783 7784define <vscale x 1 x i32> @test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 7785; CHECK-LABEL: test_vluxseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i64: 7786; CHECK: # %bb.0: # %entry 7787; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7788; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 7789; CHECK-NEXT: vmv1r.v v8, v10 7790; CHECK-NEXT: ret 7791entry: 7792 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 7793 %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) 7794 ret <vscale x 1 x i32> %1 7795} 7796 7797define <vscale x 1 x i32> @test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7798; CHECK-LABEL: test_vluxseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t_nxv1i64: 7799; CHECK: # %bb.0: # %entry 7800; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7801; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 7802; CHECK-NEXT: vmv1r.v v8, v10 7803; CHECK-NEXT: ret 7804entry: 7805 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7806 %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) 7807 ret <vscale x 1 x i32> %1 7808} 7809 7810declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i8>, i64, i64) 7811declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 7812 7813define <vscale x 2 x i32> @test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 7814; CHECK-LABEL: test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i8: 7815; CHECK: # %bb.0: # %entry 7816; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7817; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 7818; CHECK-NEXT: vmv1r.v v8, v10 7819; CHECK-NEXT: ret 7820entry: 7821 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 7822 %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) 7823 ret <vscale x 2 x i32> %1 7824} 7825 7826define <vscale x 2 x i32> @test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7827; CHECK-LABEL: test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i8: 7828; CHECK: # %bb.0: # %entry 7829; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7830; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 7831; CHECK-NEXT: vmv1r.v v8, v10 7832; CHECK-NEXT: ret 7833entry: 7834 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7835 %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) 7836 ret <vscale x 2 x i32> %1 7837} 7838 7839declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i16>, i64, i64) 7840declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 7841 7842define <vscale x 2 x i32> @test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 7843; CHECK-LABEL: test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i16: 7844; CHECK: # %bb.0: # %entry 7845; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7846; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 7847; CHECK-NEXT: vmv1r.v v8, v10 7848; CHECK-NEXT: ret 7849entry: 7850 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 7851 %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) 7852 ret <vscale x 2 x i32> %1 7853} 7854 7855define <vscale x 2 x i32> @test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7856; CHECK-LABEL: test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i16: 7857; CHECK: # %bb.0: # %entry 7858; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7859; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 7860; CHECK-NEXT: vmv1r.v v8, v10 7861; CHECK-NEXT: ret 7862entry: 7863 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7864 %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) 7865 ret <vscale x 2 x i32> %1 7866} 7867 7868declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i32>, i64, i64) 7869declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 7870 7871define <vscale x 2 x i32> @test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 7872; CHECK-LABEL: test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i32: 7873; CHECK: # %bb.0: # %entry 7874; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7875; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 7876; CHECK-NEXT: vmv1r.v v8, v10 7877; CHECK-NEXT: ret 7878entry: 7879 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 7880 %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) 7881 ret <vscale x 2 x i32> %1 7882} 7883 7884define <vscale x 2 x i32> @test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7885; CHECK-LABEL: test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i32: 7886; CHECK: # %bb.0: # %entry 7887; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7888; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 7889; CHECK-NEXT: vmv1r.v v8, v10 7890; CHECK-NEXT: ret 7891entry: 7892 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7893 %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) 7894 ret <vscale x 2 x i32> %1 7895} 7896 7897declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i64>, i64, i64) 7898declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 7899 7900define <vscale x 2 x i32> @test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 7901; CHECK-LABEL: test_vluxseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i64: 7902; CHECK: # %bb.0: # %entry 7903; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7904; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8 7905; CHECK-NEXT: vmv1r.v v8, v11 7906; CHECK-NEXT: ret 7907entry: 7908 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 7909 %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) 7910 ret <vscale x 2 x i32> %1 7911} 7912 7913define <vscale x 2 x i32> @test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 7914; CHECK-LABEL: test_vluxseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t_nxv2i64: 7915; CHECK: # %bb.0: # %entry 7916; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 7917; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8, v0.t 7918; CHECK-NEXT: vmv1r.v v8, v11 7919; CHECK-NEXT: ret 7920entry: 7921 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 7922 %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) 7923 ret <vscale x 2 x i32> %1 7924} 7925 7926declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i8>, i64, i64) 7927declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 7928 7929define <vscale x 1 x i32> @test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 7930; CHECK-LABEL: test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i8: 7931; CHECK: # %bb.0: # %entry 7932; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7933; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 7934; CHECK-NEXT: vmv1r.v v8, v10 7935; CHECK-NEXT: ret 7936entry: 7937 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 7938 %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) 7939 ret <vscale x 1 x i32> %1 7940} 7941 7942define <vscale x 1 x i32> @test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7943; CHECK-LABEL: test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i8: 7944; CHECK: # %bb.0: # %entry 7945; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7946; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 7947; CHECK-NEXT: vmv1r.v v8, v10 7948; CHECK-NEXT: ret 7949entry: 7950 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7951 %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) 7952 ret <vscale x 1 x i32> %1 7953} 7954 7955declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i16>, i64, i64) 7956declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 7957 7958define <vscale x 1 x i32> @test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 7959; CHECK-LABEL: test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i16: 7960; CHECK: # %bb.0: # %entry 7961; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7962; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 7963; CHECK-NEXT: vmv1r.v v8, v10 7964; CHECK-NEXT: ret 7965entry: 7966 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 7967 %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) 7968 ret <vscale x 1 x i32> %1 7969} 7970 7971define <vscale x 1 x i32> @test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 7972; CHECK-LABEL: test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i16: 7973; CHECK: # %bb.0: # %entry 7974; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7975; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 7976; CHECK-NEXT: vmv1r.v v8, v10 7977; CHECK-NEXT: ret 7978entry: 7979 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 7980 %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) 7981 ret <vscale x 1 x i32> %1 7982} 7983 7984declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i32>, i64, i64) 7985declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 7986 7987define <vscale x 1 x i32> @test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 7988; CHECK-LABEL: test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i32: 7989; CHECK: # %bb.0: # %entry 7990; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 7991; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 7992; CHECK-NEXT: vmv1r.v v8, v10 7993; CHECK-NEXT: ret 7994entry: 7995 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 7996 %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) 7997 ret <vscale x 1 x i32> %1 7998} 7999 8000define <vscale x 1 x i32> @test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8001; CHECK-LABEL: test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i32: 8002; CHECK: # %bb.0: # %entry 8003; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8004; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 8005; CHECK-NEXT: vmv1r.v v8, v10 8006; CHECK-NEXT: ret 8007entry: 8008 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8009 %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) 8010 ret <vscale x 1 x i32> %1 8011} 8012 8013declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i64>, i64, i64) 8014declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 8015 8016define <vscale x 1 x i32> @test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 8017; CHECK-LABEL: test_vluxseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i64: 8018; CHECK: # %bb.0: # %entry 8019; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8020; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 8021; CHECK-NEXT: vmv1r.v v8, v10 8022; CHECK-NEXT: ret 8023entry: 8024 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 8025 %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) 8026 ret <vscale x 1 x i32> %1 8027} 8028 8029define <vscale x 1 x i32> @test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8030; CHECK-LABEL: test_vluxseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t_nxv1i64: 8031; CHECK: # %bb.0: # %entry 8032; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8033; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 8034; CHECK-NEXT: vmv1r.v v8, v10 8035; CHECK-NEXT: ret 8036entry: 8037 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8038 %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) 8039 ret <vscale x 1 x i32> %1 8040} 8041 8042declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i8>, i64, i64) 8043declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 8044 8045define <vscale x 2 x i32> @test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 8046; CHECK-LABEL: test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i8: 8047; CHECK: # %bb.0: # %entry 8048; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8049; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 8050; CHECK-NEXT: vmv1r.v v8, v10 8051; CHECK-NEXT: ret 8052entry: 8053 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 8054 %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) 8055 ret <vscale x 2 x i32> %1 8056} 8057 8058define <vscale x 2 x i32> @test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8059; CHECK-LABEL: test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i8: 8060; CHECK: # %bb.0: # %entry 8061; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8062; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 8063; CHECK-NEXT: vmv1r.v v8, v10 8064; CHECK-NEXT: ret 8065entry: 8066 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8067 %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) 8068 ret <vscale x 2 x i32> %1 8069} 8070 8071declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i16>, i64, i64) 8072declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 8073 8074define <vscale x 2 x i32> @test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 8075; CHECK-LABEL: test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i16: 8076; CHECK: # %bb.0: # %entry 8077; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8078; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 8079; CHECK-NEXT: vmv1r.v v8, v10 8080; CHECK-NEXT: ret 8081entry: 8082 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 8083 %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) 8084 ret <vscale x 2 x i32> %1 8085} 8086 8087define <vscale x 2 x i32> @test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8088; CHECK-LABEL: test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i16: 8089; CHECK: # %bb.0: # %entry 8090; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8091; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 8092; CHECK-NEXT: vmv1r.v v8, v10 8093; CHECK-NEXT: ret 8094entry: 8095 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8096 %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) 8097 ret <vscale x 2 x i32> %1 8098} 8099 8100declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i32>, i64, i64) 8101declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 8102 8103define <vscale x 2 x i32> @test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 8104; CHECK-LABEL: test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i32: 8105; CHECK: # %bb.0: # %entry 8106; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8107; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 8108; CHECK-NEXT: vmv1r.v v8, v10 8109; CHECK-NEXT: ret 8110entry: 8111 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 8112 %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) 8113 ret <vscale x 2 x i32> %1 8114} 8115 8116define <vscale x 2 x i32> @test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8117; CHECK-LABEL: test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i32: 8118; CHECK: # %bb.0: # %entry 8119; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8120; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 8121; CHECK-NEXT: vmv1r.v v8, v10 8122; CHECK-NEXT: ret 8123entry: 8124 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8125 %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) 8126 ret <vscale x 2 x i32> %1 8127} 8128 8129declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i64>, i64, i64) 8130declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 8131 8132define <vscale x 2 x i32> @test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 8133; CHECK-LABEL: test_vluxseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i64: 8134; CHECK: # %bb.0: # %entry 8135; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8136; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8 8137; CHECK-NEXT: vmv1r.v v8, v11 8138; CHECK-NEXT: ret 8139entry: 8140 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 8141 %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) 8142 ret <vscale x 2 x i32> %1 8143} 8144 8145define <vscale x 2 x i32> @test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8146; CHECK-LABEL: test_vluxseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t_nxv2i64: 8147; CHECK: # %bb.0: # %entry 8148; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8149; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8, v0.t 8150; CHECK-NEXT: vmv1r.v v8, v11 8151; CHECK-NEXT: ret 8152entry: 8153 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8154 %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) 8155 ret <vscale x 2 x i32> %1 8156} 8157 8158declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i8>, i64, i64) 8159declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 8160 8161define <vscale x 1 x i32> @test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 8162; CHECK-LABEL: test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i8: 8163; CHECK: # %bb.0: # %entry 8164; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8165; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 8166; CHECK-NEXT: vmv1r.v v8, v10 8167; CHECK-NEXT: ret 8168entry: 8169 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 8170 %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) 8171 ret <vscale x 1 x i32> %1 8172} 8173 8174define <vscale x 1 x i32> @test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8175; CHECK-LABEL: test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i8: 8176; CHECK: # %bb.0: # %entry 8177; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8178; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 8179; CHECK-NEXT: vmv1r.v v8, v10 8180; CHECK-NEXT: ret 8181entry: 8182 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8183 %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) 8184 ret <vscale x 1 x i32> %1 8185} 8186 8187declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i16>, i64, i64) 8188declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 8189 8190define <vscale x 1 x i32> @test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 8191; CHECK-LABEL: test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i16: 8192; CHECK: # %bb.0: # %entry 8193; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8194; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 8195; CHECK-NEXT: vmv1r.v v8, v10 8196; CHECK-NEXT: ret 8197entry: 8198 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 8199 %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) 8200 ret <vscale x 1 x i32> %1 8201} 8202 8203define <vscale x 1 x i32> @test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8204; CHECK-LABEL: test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i16: 8205; CHECK: # %bb.0: # %entry 8206; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8207; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 8208; CHECK-NEXT: vmv1r.v v8, v10 8209; CHECK-NEXT: ret 8210entry: 8211 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8212 %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) 8213 ret <vscale x 1 x i32> %1 8214} 8215 8216declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i32>, i64, i64) 8217declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 8218 8219define <vscale x 1 x i32> @test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 8220; CHECK-LABEL: test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i32: 8221; CHECK: # %bb.0: # %entry 8222; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8223; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 8224; CHECK-NEXT: vmv1r.v v8, v10 8225; CHECK-NEXT: ret 8226entry: 8227 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 8228 %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) 8229 ret <vscale x 1 x i32> %1 8230} 8231 8232define <vscale x 1 x i32> @test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8233; CHECK-LABEL: test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i32: 8234; CHECK: # %bb.0: # %entry 8235; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8236; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 8237; CHECK-NEXT: vmv1r.v v8, v10 8238; CHECK-NEXT: ret 8239entry: 8240 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8241 %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) 8242 ret <vscale x 1 x i32> %1 8243} 8244 8245declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i64>, i64, i64) 8246declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 8247 8248define <vscale x 1 x i32> @test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 8249; CHECK-LABEL: test_vluxseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i64: 8250; CHECK: # %bb.0: # %entry 8251; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8252; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 8253; CHECK-NEXT: vmv1r.v v8, v10 8254; CHECK-NEXT: ret 8255entry: 8256 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 8257 %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) 8258 ret <vscale x 1 x i32> %1 8259} 8260 8261define <vscale x 1 x i32> @test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8262; CHECK-LABEL: test_vluxseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t_nxv1i64: 8263; CHECK: # %bb.0: # %entry 8264; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8265; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 8266; CHECK-NEXT: vmv1r.v v8, v10 8267; CHECK-NEXT: ret 8268entry: 8269 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8270 %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) 8271 ret <vscale x 1 x i32> %1 8272} 8273 8274declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i8>, i64, i64) 8275declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 8276 8277define <vscale x 2 x i32> @test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 8278; CHECK-LABEL: test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i8: 8279; CHECK: # %bb.0: # %entry 8280; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8281; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 8282; CHECK-NEXT: vmv1r.v v8, v10 8283; CHECK-NEXT: ret 8284entry: 8285 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 8286 %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) 8287 ret <vscale x 2 x i32> %1 8288} 8289 8290define <vscale x 2 x i32> @test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8291; CHECK-LABEL: test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i8: 8292; CHECK: # %bb.0: # %entry 8293; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8294; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 8295; CHECK-NEXT: vmv1r.v v8, v10 8296; CHECK-NEXT: ret 8297entry: 8298 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8299 %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) 8300 ret <vscale x 2 x i32> %1 8301} 8302 8303declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i16>, i64, i64) 8304declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 8305 8306define <vscale x 2 x i32> @test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 8307; CHECK-LABEL: test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i16: 8308; CHECK: # %bb.0: # %entry 8309; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8310; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 8311; CHECK-NEXT: vmv1r.v v8, v10 8312; CHECK-NEXT: ret 8313entry: 8314 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 8315 %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) 8316 ret <vscale x 2 x i32> %1 8317} 8318 8319define <vscale x 2 x i32> @test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8320; CHECK-LABEL: test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i16: 8321; CHECK: # %bb.0: # %entry 8322; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8323; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 8324; CHECK-NEXT: vmv1r.v v8, v10 8325; CHECK-NEXT: ret 8326entry: 8327 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8328 %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) 8329 ret <vscale x 2 x i32> %1 8330} 8331 8332declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i32>, i64, i64) 8333declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 8334 8335define <vscale x 2 x i32> @test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 8336; CHECK-LABEL: test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i32: 8337; CHECK: # %bb.0: # %entry 8338; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8339; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 8340; CHECK-NEXT: vmv1r.v v8, v10 8341; CHECK-NEXT: ret 8342entry: 8343 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 8344 %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) 8345 ret <vscale x 2 x i32> %1 8346} 8347 8348define <vscale x 2 x i32> @test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8349; CHECK-LABEL: test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i32: 8350; CHECK: # %bb.0: # %entry 8351; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8352; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 8353; CHECK-NEXT: vmv1r.v v8, v10 8354; CHECK-NEXT: ret 8355entry: 8356 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8357 %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) 8358 ret <vscale x 2 x i32> %1 8359} 8360 8361declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i64>, i64, i64) 8362declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 8363 8364define <vscale x 2 x i32> @test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 8365; CHECK-LABEL: test_vluxseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i64: 8366; CHECK: # %bb.0: # %entry 8367; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8368; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8 8369; CHECK-NEXT: vmv1r.v v8, v11 8370; CHECK-NEXT: ret 8371entry: 8372 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 8373 %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) 8374 ret <vscale x 2 x i32> %1 8375} 8376 8377define <vscale x 2 x i32> @test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8378; CHECK-LABEL: test_vluxseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t_nxv2i64: 8379; CHECK: # %bb.0: # %entry 8380; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8381; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8, v0.t 8382; CHECK-NEXT: vmv1r.v v8, v11 8383; CHECK-NEXT: ret 8384entry: 8385 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8386 %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) 8387 ret <vscale x 2 x i32> %1 8388} 8389 8390declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i8>, i64, i64) 8391declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 8392 8393define <vscale x 1 x i32> @test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 8394; CHECK-LABEL: test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i8: 8395; CHECK: # %bb.0: # %entry 8396; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8397; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 8398; CHECK-NEXT: vmv1r.v v8, v10 8399; CHECK-NEXT: ret 8400entry: 8401 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 8402 %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) 8403 ret <vscale x 1 x i32> %1 8404} 8405 8406define <vscale x 1 x i32> @test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8407; CHECK-LABEL: test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i8: 8408; CHECK: # %bb.0: # %entry 8409; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8410; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 8411; CHECK-NEXT: vmv1r.v v8, v10 8412; CHECK-NEXT: ret 8413entry: 8414 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8415 %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) 8416 ret <vscale x 1 x i32> %1 8417} 8418 8419declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i16>, i64, i64) 8420declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 8421 8422define <vscale x 1 x i32> @test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 8423; CHECK-LABEL: test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i16: 8424; CHECK: # %bb.0: # %entry 8425; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8426; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 8427; CHECK-NEXT: vmv1r.v v8, v10 8428; CHECK-NEXT: ret 8429entry: 8430 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 8431 %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) 8432 ret <vscale x 1 x i32> %1 8433} 8434 8435define <vscale x 1 x i32> @test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8436; CHECK-LABEL: test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i16: 8437; CHECK: # %bb.0: # %entry 8438; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8439; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 8440; CHECK-NEXT: vmv1r.v v8, v10 8441; CHECK-NEXT: ret 8442entry: 8443 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8444 %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) 8445 ret <vscale x 1 x i32> %1 8446} 8447 8448declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i32>, i64, i64) 8449declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 8450 8451define <vscale x 1 x i32> @test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 8452; CHECK-LABEL: test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i32: 8453; CHECK: # %bb.0: # %entry 8454; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8455; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 8456; CHECK-NEXT: vmv1r.v v8, v10 8457; CHECK-NEXT: ret 8458entry: 8459 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 8460 %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) 8461 ret <vscale x 1 x i32> %1 8462} 8463 8464define <vscale x 1 x i32> @test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8465; CHECK-LABEL: test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i32: 8466; CHECK: # %bb.0: # %entry 8467; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8468; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 8469; CHECK-NEXT: vmv1r.v v8, v10 8470; CHECK-NEXT: ret 8471entry: 8472 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8473 %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) 8474 ret <vscale x 1 x i32> %1 8475} 8476 8477declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i64>, i64, i64) 8478declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 8479 8480define <vscale x 1 x i32> @test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 8481; CHECK-LABEL: test_vluxseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i64: 8482; CHECK: # %bb.0: # %entry 8483; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8484; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 8485; CHECK-NEXT: vmv1r.v v8, v10 8486; CHECK-NEXT: ret 8487entry: 8488 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 8489 %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) 8490 ret <vscale x 1 x i32> %1 8491} 8492 8493define <vscale x 1 x i32> @test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8494; CHECK-LABEL: test_vluxseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t_nxv1i64: 8495; CHECK: # %bb.0: # %entry 8496; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 8497; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 8498; CHECK-NEXT: vmv1r.v v8, v10 8499; CHECK-NEXT: ret 8500entry: 8501 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 8502 %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) 8503 ret <vscale x 1 x i32> %1 8504} 8505 8506declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i8>, i64, i64) 8507declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 8508 8509define <vscale x 2 x i32> @test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 8510; CHECK-LABEL: test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i8: 8511; CHECK: # %bb.0: # %entry 8512; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8513; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 8514; CHECK-NEXT: vmv1r.v v8, v10 8515; CHECK-NEXT: ret 8516entry: 8517 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 8518 %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) 8519 ret <vscale x 2 x i32> %1 8520} 8521 8522define <vscale x 2 x i32> @test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8523; CHECK-LABEL: test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i8: 8524; CHECK: # %bb.0: # %entry 8525; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8526; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 8527; CHECK-NEXT: vmv1r.v v8, v10 8528; CHECK-NEXT: ret 8529entry: 8530 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8531 %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) 8532 ret <vscale x 2 x i32> %1 8533} 8534 8535declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i16>, i64, i64) 8536declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 8537 8538define <vscale x 2 x i32> @test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 8539; CHECK-LABEL: test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i16: 8540; CHECK: # %bb.0: # %entry 8541; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8542; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 8543; CHECK-NEXT: vmv1r.v v8, v10 8544; CHECK-NEXT: ret 8545entry: 8546 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 8547 %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) 8548 ret <vscale x 2 x i32> %1 8549} 8550 8551define <vscale x 2 x i32> @test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8552; CHECK-LABEL: test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i16: 8553; CHECK: # %bb.0: # %entry 8554; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8555; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 8556; CHECK-NEXT: vmv1r.v v8, v10 8557; CHECK-NEXT: ret 8558entry: 8559 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8560 %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) 8561 ret <vscale x 2 x i32> %1 8562} 8563 8564declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i32>, i64, i64) 8565declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 8566 8567define <vscale x 2 x i32> @test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 8568; CHECK-LABEL: test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i32: 8569; CHECK: # %bb.0: # %entry 8570; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8571; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 8572; CHECK-NEXT: vmv1r.v v8, v10 8573; CHECK-NEXT: ret 8574entry: 8575 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 8576 %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) 8577 ret <vscale x 2 x i32> %1 8578} 8579 8580define <vscale x 2 x i32> @test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8581; CHECK-LABEL: test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i32: 8582; CHECK: # %bb.0: # %entry 8583; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8584; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 8585; CHECK-NEXT: vmv1r.v v8, v10 8586; CHECK-NEXT: ret 8587entry: 8588 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8589 %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) 8590 ret <vscale x 2 x i32> %1 8591} 8592 8593declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i64>, i64, i64) 8594declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 8595 8596define <vscale x 2 x i32> @test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 8597; CHECK-LABEL: test_vluxseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i64: 8598; CHECK: # %bb.0: # %entry 8599; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8600; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8 8601; CHECK-NEXT: vmv1r.v v8, v11 8602; CHECK-NEXT: ret 8603entry: 8604 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 8605 %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) 8606 ret <vscale x 2 x i32> %1 8607} 8608 8609define <vscale x 2 x i32> @test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8610; CHECK-LABEL: test_vluxseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t_nxv2i64: 8611; CHECK: # %bb.0: # %entry 8612; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 8613; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8, v0.t 8614; CHECK-NEXT: vmv1r.v v8, v11 8615; CHECK-NEXT: ret 8616entry: 8617 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 8618 %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) 8619 ret <vscale x 2 x i32> %1 8620} 8621 8622declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i8>, i64, i64) 8623declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 8624 8625define <vscale x 1 x i64> @test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 8626; CHECK-LABEL: test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i8: 8627; CHECK: # %bb.0: # %entry 8628; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8629; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 8630; CHECK-NEXT: vmv1r.v v8, v10 8631; CHECK-NEXT: ret 8632entry: 8633 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 8634 %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) 8635 ret <vscale x 1 x i64> %1 8636} 8637 8638define <vscale x 1 x i64> @test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8639; CHECK-LABEL: test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i8: 8640; CHECK: # %bb.0: # %entry 8641; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8642; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 8643; CHECK-NEXT: vmv1r.v v8, v10 8644; CHECK-NEXT: ret 8645entry: 8646 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 8647 %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) 8648 ret <vscale x 1 x i64> %1 8649} 8650 8651declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i16>, i64, i64) 8652declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 8653 8654define <vscale x 1 x i64> @test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 8655; CHECK-LABEL: test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i16: 8656; CHECK: # %bb.0: # %entry 8657; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8658; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 8659; CHECK-NEXT: vmv1r.v v8, v10 8660; CHECK-NEXT: ret 8661entry: 8662 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 8663 %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) 8664 ret <vscale x 1 x i64> %1 8665} 8666 8667define <vscale x 1 x i64> @test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8668; CHECK-LABEL: test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i16: 8669; CHECK: # %bb.0: # %entry 8670; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8671; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 8672; CHECK-NEXT: vmv1r.v v8, v10 8673; CHECK-NEXT: ret 8674entry: 8675 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 8676 %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) 8677 ret <vscale x 1 x i64> %1 8678} 8679 8680declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i32>, i64, i64) 8681declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 8682 8683define <vscale x 1 x i64> @test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 8684; CHECK-LABEL: test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i32: 8685; CHECK: # %bb.0: # %entry 8686; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8687; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 8688; CHECK-NEXT: vmv1r.v v8, v10 8689; CHECK-NEXT: ret 8690entry: 8691 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 8692 %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) 8693 ret <vscale x 1 x i64> %1 8694} 8695 8696define <vscale x 1 x i64> @test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8697; CHECK-LABEL: test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i32: 8698; CHECK: # %bb.0: # %entry 8699; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8700; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 8701; CHECK-NEXT: vmv1r.v v8, v10 8702; CHECK-NEXT: ret 8703entry: 8704 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 8705 %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) 8706 ret <vscale x 1 x i64> %1 8707} 8708 8709declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i64>, i64, i64) 8710declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 8711 8712define <vscale x 1 x i64> @test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 8713; CHECK-LABEL: test_vluxseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i64: 8714; CHECK: # %bb.0: # %entry 8715; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8716; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 8717; CHECK-NEXT: vmv1r.v v8, v10 8718; CHECK-NEXT: ret 8719entry: 8720 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 8721 %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) 8722 ret <vscale x 1 x i64> %1 8723} 8724 8725define <vscale x 1 x i64> @test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8726; CHECK-LABEL: test_vluxseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t_nxv1i64: 8727; CHECK: # %bb.0: # %entry 8728; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8729; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 8730; CHECK-NEXT: vmv1r.v v8, v10 8731; CHECK-NEXT: ret 8732entry: 8733 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 8734 %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) 8735 ret <vscale x 1 x i64> %1 8736} 8737 8738declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i8>, i64, i64) 8739declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 8740 8741define <vscale x 2 x i64> @test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 8742; CHECK-LABEL: test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i8: 8743; CHECK: # %bb.0: # %entry 8744; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8745; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 8746; CHECK-NEXT: vmv2r.v v8, v12 8747; CHECK-NEXT: ret 8748entry: 8749 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 6) 8750 %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) 8751 ret <vscale x 2 x i64> %1 8752} 8753 8754define <vscale x 2 x i64> @test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8755; CHECK-LABEL: test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i8: 8756; CHECK: # %bb.0: # %entry 8757; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8758; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 8759; CHECK-NEXT: vmv2r.v v8, v12 8760; CHECK-NEXT: ret 8761entry: 8762 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 8763 %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) 8764 ret <vscale x 2 x i64> %1 8765} 8766 8767declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i16>, i64, i64) 8768declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 8769 8770define <vscale x 2 x i64> @test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 8771; CHECK-LABEL: test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i16: 8772; CHECK: # %bb.0: # %entry 8773; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8774; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 8775; CHECK-NEXT: vmv2r.v v8, v12 8776; CHECK-NEXT: ret 8777entry: 8778 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 6) 8779 %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) 8780 ret <vscale x 2 x i64> %1 8781} 8782 8783define <vscale x 2 x i64> @test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8784; CHECK-LABEL: test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i16: 8785; CHECK: # %bb.0: # %entry 8786; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8787; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 8788; CHECK-NEXT: vmv2r.v v8, v12 8789; CHECK-NEXT: ret 8790entry: 8791 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 8792 %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) 8793 ret <vscale x 2 x i64> %1 8794} 8795 8796declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i32>, i64, i64) 8797declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 8798 8799define <vscale x 2 x i64> @test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 8800; CHECK-LABEL: test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i32: 8801; CHECK: # %bb.0: # %entry 8802; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8803; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 8804; CHECK-NEXT: vmv2r.v v8, v12 8805; CHECK-NEXT: ret 8806entry: 8807 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 6) 8808 %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) 8809 ret <vscale x 2 x i64> %1 8810} 8811 8812define <vscale x 2 x i64> @test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8813; CHECK-LABEL: test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i32: 8814; CHECK: # %bb.0: # %entry 8815; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8816; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 8817; CHECK-NEXT: vmv2r.v v8, v12 8818; CHECK-NEXT: ret 8819entry: 8820 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 8821 %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) 8822 ret <vscale x 2 x i64> %1 8823} 8824 8825declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i64>, i64, i64) 8826declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 8827 8828define <vscale x 2 x i64> @test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 8829; CHECK-LABEL: test_vluxseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i64: 8830; CHECK: # %bb.0: # %entry 8831; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8832; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 8833; CHECK-NEXT: vmv2r.v v8, v12 8834; CHECK-NEXT: ret 8835entry: 8836 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 6) 8837 %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) 8838 ret <vscale x 2 x i64> %1 8839} 8840 8841define <vscale x 2 x i64> @test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 8842; CHECK-LABEL: test_vluxseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t_nxv2i64: 8843; CHECK: # %bb.0: # %entry 8844; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 8845; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 8846; CHECK-NEXT: vmv2r.v v8, v12 8847; CHECK-NEXT: ret 8848entry: 8849 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 8850 %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) 8851 ret <vscale x 2 x i64> %1 8852} 8853 8854declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i8>, i64, i64) 8855declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i8.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i64, i64, i64) 8856 8857define <vscale x 4 x i64> @test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 8858; CHECK-LABEL: test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i8: 8859; CHECK: # %bb.0: # %entry 8860; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8861; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 8862; CHECK-NEXT: vmv4r.v v8, v16 8863; CHECK-NEXT: ret 8864entry: 8865 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 6) 8866 %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) 8867 ret <vscale x 4 x i64> %1 8868} 8869 8870define <vscale x 4 x i64> @test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 8871; CHECK-LABEL: test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i8: 8872; CHECK: # %bb.0: # %entry 8873; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8874; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 8875; CHECK-NEXT: vmv4r.v v8, v16 8876; CHECK-NEXT: ret 8877entry: 8878 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 8879 %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) 8880 ret <vscale x 4 x i64> %1 8881} 8882 8883declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i16>, i64, i64) 8884declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i16.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i64, i64, i64) 8885 8886define <vscale x 4 x i64> @test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 8887; CHECK-LABEL: test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i16: 8888; CHECK: # %bb.0: # %entry 8889; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8890; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 8891; CHECK-NEXT: vmv4r.v v8, v16 8892; CHECK-NEXT: ret 8893entry: 8894 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 6) 8895 %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) 8896 ret <vscale x 4 x i64> %1 8897} 8898 8899define <vscale x 4 x i64> @test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 8900; CHECK-LABEL: test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i16: 8901; CHECK: # %bb.0: # %entry 8902; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8903; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 8904; CHECK-NEXT: vmv4r.v v8, v16 8905; CHECK-NEXT: ret 8906entry: 8907 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 8908 %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) 8909 ret <vscale x 4 x i64> %1 8910} 8911 8912declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i32>, i64, i64) 8913declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i32.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i64, i64, i64) 8914 8915define <vscale x 4 x i64> @test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 8916; CHECK-LABEL: test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i32: 8917; CHECK: # %bb.0: # %entry 8918; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8919; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 8920; CHECK-NEXT: vmv4r.v v8, v16 8921; CHECK-NEXT: ret 8922entry: 8923 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 6) 8924 %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) 8925 ret <vscale x 4 x i64> %1 8926} 8927 8928define <vscale x 4 x i64> @test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 8929; CHECK-LABEL: test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i32: 8930; CHECK: # %bb.0: # %entry 8931; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8932; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 8933; CHECK-NEXT: vmv4r.v v8, v16 8934; CHECK-NEXT: ret 8935entry: 8936 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 8937 %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) 8938 ret <vscale x 4 x i64> %1 8939} 8940 8941declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i64>, i64, i64) 8942declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i64.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, <vscale x 4 x i64>, <vscale x 4 x i1>, i64, i64, i64) 8943 8944define <vscale x 4 x i64> @test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 8945; CHECK-LABEL: test_vluxseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i64: 8946; CHECK: # %bb.0: # %entry 8947; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8948; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 8949; CHECK-NEXT: vmv4r.v v8, v16 8950; CHECK-NEXT: ret 8951entry: 8952 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 6) 8953 %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) 8954 ret <vscale x 4 x i64> %1 8955} 8956 8957define <vscale x 4 x i64> @test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 8958; CHECK-LABEL: test_vluxseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t_nxv4i64: 8959; CHECK: # %bb.0: # %entry 8960; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 8961; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 8962; CHECK-NEXT: vmv4r.v v8, v16 8963; CHECK-NEXT: ret 8964entry: 8965 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 8966 %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) 8967 ret <vscale x 4 x i64> %1 8968} 8969 8970declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i8>, i64, i64) 8971declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 8972 8973define <vscale x 1 x i64> @test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 8974; CHECK-LABEL: test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i8: 8975; CHECK: # %bb.0: # %entry 8976; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8977; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 8978; CHECK-NEXT: vmv1r.v v8, v10 8979; CHECK-NEXT: ret 8980entry: 8981 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 8982 %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) 8983 ret <vscale x 1 x i64> %1 8984} 8985 8986define <vscale x 1 x i64> @test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 8987; CHECK-LABEL: test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i8: 8988; CHECK: # %bb.0: # %entry 8989; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 8990; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 8991; CHECK-NEXT: vmv1r.v v8, v10 8992; CHECK-NEXT: ret 8993entry: 8994 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 8995 %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) 8996 ret <vscale x 1 x i64> %1 8997} 8998 8999declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i16>, i64, i64) 9000declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 9001 9002define <vscale x 1 x i64> @test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 9003; CHECK-LABEL: test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i16: 9004; CHECK: # %bb.0: # %entry 9005; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9006; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 9007; CHECK-NEXT: vmv1r.v v8, v10 9008; CHECK-NEXT: ret 9009entry: 9010 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 9011 %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) 9012 ret <vscale x 1 x i64> %1 9013} 9014 9015define <vscale x 1 x i64> @test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9016; CHECK-LABEL: test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i16: 9017; CHECK: # %bb.0: # %entry 9018; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9019; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 9020; CHECK-NEXT: vmv1r.v v8, v10 9021; CHECK-NEXT: ret 9022entry: 9023 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9024 %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) 9025 ret <vscale x 1 x i64> %1 9026} 9027 9028declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i32>, i64, i64) 9029declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 9030 9031define <vscale x 1 x i64> @test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 9032; CHECK-LABEL: test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i32: 9033; CHECK: # %bb.0: # %entry 9034; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9035; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 9036; CHECK-NEXT: vmv1r.v v8, v10 9037; CHECK-NEXT: ret 9038entry: 9039 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 9040 %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) 9041 ret <vscale x 1 x i64> %1 9042} 9043 9044define <vscale x 1 x i64> @test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9045; CHECK-LABEL: test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i32: 9046; CHECK: # %bb.0: # %entry 9047; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9048; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 9049; CHECK-NEXT: vmv1r.v v8, v10 9050; CHECK-NEXT: ret 9051entry: 9052 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9053 %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) 9054 ret <vscale x 1 x i64> %1 9055} 9056 9057declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i64>, i64, i64) 9058declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 9059 9060define <vscale x 1 x i64> @test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 9061; CHECK-LABEL: test_vluxseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i64: 9062; CHECK: # %bb.0: # %entry 9063; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9064; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 9065; CHECK-NEXT: vmv1r.v v8, v10 9066; CHECK-NEXT: ret 9067entry: 9068 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 9069 %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) 9070 ret <vscale x 1 x i64> %1 9071} 9072 9073define <vscale x 1 x i64> @test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9074; CHECK-LABEL: test_vluxseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t_nxv1i64: 9075; CHECK: # %bb.0: # %entry 9076; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9077; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 9078; CHECK-NEXT: vmv1r.v v8, v10 9079; CHECK-NEXT: ret 9080entry: 9081 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9082 %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) 9083 ret <vscale x 1 x i64> %1 9084} 9085 9086declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i8>, i64, i64) 9087declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 9088 9089define <vscale x 2 x i64> @test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 9090; CHECK-LABEL: test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i8: 9091; CHECK: # %bb.0: # %entry 9092; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9093; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 9094; CHECK-NEXT: vmv2r.v v8, v12 9095; CHECK-NEXT: ret 9096entry: 9097 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 6) 9098 %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) 9099 ret <vscale x 2 x i64> %1 9100} 9101 9102define <vscale x 2 x i64> @test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9103; CHECK-LABEL: test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i8: 9104; CHECK: # %bb.0: # %entry 9105; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9106; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 9107; CHECK-NEXT: vmv2r.v v8, v12 9108; CHECK-NEXT: ret 9109entry: 9110 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9111 %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) 9112 ret <vscale x 2 x i64> %1 9113} 9114 9115declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i16>, i64, i64) 9116declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 9117 9118define <vscale x 2 x i64> @test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 9119; CHECK-LABEL: test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i16: 9120; CHECK: # %bb.0: # %entry 9121; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9122; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 9123; CHECK-NEXT: vmv2r.v v8, v12 9124; CHECK-NEXT: ret 9125entry: 9126 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 6) 9127 %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) 9128 ret <vscale x 2 x i64> %1 9129} 9130 9131define <vscale x 2 x i64> @test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9132; CHECK-LABEL: test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i16: 9133; CHECK: # %bb.0: # %entry 9134; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9135; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 9136; CHECK-NEXT: vmv2r.v v8, v12 9137; CHECK-NEXT: ret 9138entry: 9139 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9140 %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) 9141 ret <vscale x 2 x i64> %1 9142} 9143 9144declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i32>, i64, i64) 9145declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 9146 9147define <vscale x 2 x i64> @test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 9148; CHECK-LABEL: test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i32: 9149; CHECK: # %bb.0: # %entry 9150; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9151; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 9152; CHECK-NEXT: vmv2r.v v8, v12 9153; CHECK-NEXT: ret 9154entry: 9155 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 6) 9156 %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) 9157 ret <vscale x 2 x i64> %1 9158} 9159 9160define <vscale x 2 x i64> @test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9161; CHECK-LABEL: test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i32: 9162; CHECK: # %bb.0: # %entry 9163; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9164; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 9165; CHECK-NEXT: vmv2r.v v8, v12 9166; CHECK-NEXT: ret 9167entry: 9168 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9169 %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) 9170 ret <vscale x 2 x i64> %1 9171} 9172 9173declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i64>, i64, i64) 9174declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 9175 9176define <vscale x 2 x i64> @test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 9177; CHECK-LABEL: test_vluxseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i64: 9178; CHECK: # %bb.0: # %entry 9179; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9180; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 9181; CHECK-NEXT: vmv2r.v v8, v12 9182; CHECK-NEXT: ret 9183entry: 9184 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 6) 9185 %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) 9186 ret <vscale x 2 x i64> %1 9187} 9188 9189define <vscale x 2 x i64> @test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9190; CHECK-LABEL: test_vluxseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t_nxv2i64: 9191; CHECK: # %bb.0: # %entry 9192; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9193; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 9194; CHECK-NEXT: vmv2r.v v8, v12 9195; CHECK-NEXT: ret 9196entry: 9197 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9198 %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) 9199 ret <vscale x 2 x i64> %1 9200} 9201 9202declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i8>, i64, i64) 9203declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 9204 9205define <vscale x 1 x i64> @test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 9206; CHECK-LABEL: test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i8: 9207; CHECK: # %bb.0: # %entry 9208; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9209; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 9210; CHECK-NEXT: vmv1r.v v8, v10 9211; CHECK-NEXT: ret 9212entry: 9213 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 9214 %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) 9215 ret <vscale x 1 x i64> %1 9216} 9217 9218define <vscale x 1 x i64> @test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9219; CHECK-LABEL: test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i8: 9220; CHECK: # %bb.0: # %entry 9221; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9222; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 9223; CHECK-NEXT: vmv1r.v v8, v10 9224; CHECK-NEXT: ret 9225entry: 9226 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9227 %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) 9228 ret <vscale x 1 x i64> %1 9229} 9230 9231declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i16>, i64, i64) 9232declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 9233 9234define <vscale x 1 x i64> @test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 9235; CHECK-LABEL: test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i16: 9236; CHECK: # %bb.0: # %entry 9237; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9238; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 9239; CHECK-NEXT: vmv1r.v v8, v10 9240; CHECK-NEXT: ret 9241entry: 9242 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 9243 %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) 9244 ret <vscale x 1 x i64> %1 9245} 9246 9247define <vscale x 1 x i64> @test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9248; CHECK-LABEL: test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i16: 9249; CHECK: # %bb.0: # %entry 9250; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9251; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 9252; CHECK-NEXT: vmv1r.v v8, v10 9253; CHECK-NEXT: ret 9254entry: 9255 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9256 %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) 9257 ret <vscale x 1 x i64> %1 9258} 9259 9260declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i32>, i64, i64) 9261declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 9262 9263define <vscale x 1 x i64> @test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 9264; CHECK-LABEL: test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i32: 9265; CHECK: # %bb.0: # %entry 9266; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9267; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 9268; CHECK-NEXT: vmv1r.v v8, v10 9269; CHECK-NEXT: ret 9270entry: 9271 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 9272 %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) 9273 ret <vscale x 1 x i64> %1 9274} 9275 9276define <vscale x 1 x i64> @test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9277; CHECK-LABEL: test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i32: 9278; CHECK: # %bb.0: # %entry 9279; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9280; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 9281; CHECK-NEXT: vmv1r.v v8, v10 9282; CHECK-NEXT: ret 9283entry: 9284 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9285 %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) 9286 ret <vscale x 1 x i64> %1 9287} 9288 9289declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i64>, i64, i64) 9290declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 9291 9292define <vscale x 1 x i64> @test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 9293; CHECK-LABEL: test_vluxseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i64: 9294; CHECK: # %bb.0: # %entry 9295; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9296; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 9297; CHECK-NEXT: vmv1r.v v8, v10 9298; CHECK-NEXT: ret 9299entry: 9300 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 9301 %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) 9302 ret <vscale x 1 x i64> %1 9303} 9304 9305define <vscale x 1 x i64> @test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9306; CHECK-LABEL: test_vluxseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t_nxv1i64: 9307; CHECK: # %bb.0: # %entry 9308; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9309; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 9310; CHECK-NEXT: vmv1r.v v8, v10 9311; CHECK-NEXT: ret 9312entry: 9313 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9314 %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) 9315 ret <vscale x 1 x i64> %1 9316} 9317 9318declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i8>, i64, i64) 9319declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i8.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i64, i64, i64) 9320 9321define <vscale x 2 x i64> @test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 9322; CHECK-LABEL: test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i8: 9323; CHECK: # %bb.0: # %entry 9324; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9325; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 9326; CHECK-NEXT: vmv2r.v v8, v12 9327; CHECK-NEXT: ret 9328entry: 9329 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 6) 9330 %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) 9331 ret <vscale x 2 x i64> %1 9332} 9333 9334define <vscale x 2 x i64> @test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9335; CHECK-LABEL: test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i8: 9336; CHECK: # %bb.0: # %entry 9337; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9338; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 9339; CHECK-NEXT: vmv2r.v v8, v12 9340; CHECK-NEXT: ret 9341entry: 9342 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9343 %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) 9344 ret <vscale x 2 x i64> %1 9345} 9346 9347declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i16>, i64, i64) 9348declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i16.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i64, i64, i64) 9349 9350define <vscale x 2 x i64> @test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 9351; CHECK-LABEL: test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i16: 9352; CHECK: # %bb.0: # %entry 9353; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9354; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 9355; CHECK-NEXT: vmv2r.v v8, v12 9356; CHECK-NEXT: ret 9357entry: 9358 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 6) 9359 %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) 9360 ret <vscale x 2 x i64> %1 9361} 9362 9363define <vscale x 2 x i64> @test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9364; CHECK-LABEL: test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i16: 9365; CHECK: # %bb.0: # %entry 9366; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9367; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 9368; CHECK-NEXT: vmv2r.v v8, v12 9369; CHECK-NEXT: ret 9370entry: 9371 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9372 %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) 9373 ret <vscale x 2 x i64> %1 9374} 9375 9376declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i32>, i64, i64) 9377declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i32.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i64, i64, i64) 9378 9379define <vscale x 2 x i64> @test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 9380; CHECK-LABEL: test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i32: 9381; CHECK: # %bb.0: # %entry 9382; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9383; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 9384; CHECK-NEXT: vmv2r.v v8, v12 9385; CHECK-NEXT: ret 9386entry: 9387 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 6) 9388 %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) 9389 ret <vscale x 2 x i64> %1 9390} 9391 9392define <vscale x 2 x i64> @test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9393; CHECK-LABEL: test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i32: 9394; CHECK: # %bb.0: # %entry 9395; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9396; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 9397; CHECK-NEXT: vmv2r.v v8, v12 9398; CHECK-NEXT: ret 9399entry: 9400 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9401 %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) 9402 ret <vscale x 2 x i64> %1 9403} 9404 9405declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i64>, i64, i64) 9406declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i64.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, <vscale x 2 x i64>, <vscale x 2 x i1>, i64, i64, i64) 9407 9408define <vscale x 2 x i64> @test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 9409; CHECK-LABEL: test_vluxseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i64: 9410; CHECK: # %bb.0: # %entry 9411; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9412; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 9413; CHECK-NEXT: vmv2r.v v8, v12 9414; CHECK-NEXT: ret 9415entry: 9416 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 6) 9417 %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) 9418 ret <vscale x 2 x i64> %1 9419} 9420 9421define <vscale x 2 x i64> @test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 9422; CHECK-LABEL: test_vluxseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t_nxv2i64: 9423; CHECK: # %bb.0: # %entry 9424; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 9425; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 9426; CHECK-NEXT: vmv2r.v v8, v12 9427; CHECK-NEXT: ret 9428entry: 9429 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 9430 %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) 9431 ret <vscale x 2 x i64> %1 9432} 9433 9434declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i8>, i64, i64) 9435declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 9436 9437define <vscale x 1 x i64> @test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 9438; CHECK-LABEL: test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i8: 9439; CHECK: # %bb.0: # %entry 9440; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9441; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 9442; CHECK-NEXT: vmv1r.v v8, v10 9443; CHECK-NEXT: ret 9444entry: 9445 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 9446 %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) 9447 ret <vscale x 1 x i64> %1 9448} 9449 9450define <vscale x 1 x i64> @test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9451; CHECK-LABEL: test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i8: 9452; CHECK: # %bb.0: # %entry 9453; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9454; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 9455; CHECK-NEXT: vmv1r.v v8, v10 9456; CHECK-NEXT: ret 9457entry: 9458 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9459 %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) 9460 ret <vscale x 1 x i64> %1 9461} 9462 9463declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i16>, i64, i64) 9464declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 9465 9466define <vscale x 1 x i64> @test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 9467; CHECK-LABEL: test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i16: 9468; CHECK: # %bb.0: # %entry 9469; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9470; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 9471; CHECK-NEXT: vmv1r.v v8, v10 9472; CHECK-NEXT: ret 9473entry: 9474 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 9475 %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) 9476 ret <vscale x 1 x i64> %1 9477} 9478 9479define <vscale x 1 x i64> @test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9480; CHECK-LABEL: test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i16: 9481; CHECK: # %bb.0: # %entry 9482; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9483; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 9484; CHECK-NEXT: vmv1r.v v8, v10 9485; CHECK-NEXT: ret 9486entry: 9487 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9488 %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) 9489 ret <vscale x 1 x i64> %1 9490} 9491 9492declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i32>, i64, i64) 9493declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 9494 9495define <vscale x 1 x i64> @test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 9496; CHECK-LABEL: test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i32: 9497; CHECK: # %bb.0: # %entry 9498; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9499; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 9500; CHECK-NEXT: vmv1r.v v8, v10 9501; CHECK-NEXT: ret 9502entry: 9503 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 9504 %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) 9505 ret <vscale x 1 x i64> %1 9506} 9507 9508define <vscale x 1 x i64> @test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9509; CHECK-LABEL: test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i32: 9510; CHECK: # %bb.0: # %entry 9511; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9512; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 9513; CHECK-NEXT: vmv1r.v v8, v10 9514; CHECK-NEXT: ret 9515entry: 9516 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9517 %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) 9518 ret <vscale x 1 x i64> %1 9519} 9520 9521declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i64>, i64, i64) 9522declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 9523 9524define <vscale x 1 x i64> @test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 9525; CHECK-LABEL: test_vluxseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i64: 9526; CHECK: # %bb.0: # %entry 9527; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9528; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 9529; CHECK-NEXT: vmv1r.v v8, v10 9530; CHECK-NEXT: ret 9531entry: 9532 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 9533 %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) 9534 ret <vscale x 1 x i64> %1 9535} 9536 9537define <vscale x 1 x i64> @test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9538; CHECK-LABEL: test_vluxseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t_nxv1i64: 9539; CHECK: # %bb.0: # %entry 9540; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9541; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 9542; CHECK-NEXT: vmv1r.v v8, v10 9543; CHECK-NEXT: ret 9544entry: 9545 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9546 %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) 9547 ret <vscale x 1 x i64> %1 9548} 9549 9550declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i8>, i64, i64) 9551declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 9552 9553define <vscale x 1 x i64> @test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 9554; CHECK-LABEL: test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i8: 9555; CHECK: # %bb.0: # %entry 9556; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9557; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 9558; CHECK-NEXT: vmv1r.v v8, v10 9559; CHECK-NEXT: ret 9560entry: 9561 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 9562 %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) 9563 ret <vscale x 1 x i64> %1 9564} 9565 9566define <vscale x 1 x i64> @test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9567; CHECK-LABEL: test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i8: 9568; CHECK: # %bb.0: # %entry 9569; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9570; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 9571; CHECK-NEXT: vmv1r.v v8, v10 9572; CHECK-NEXT: ret 9573entry: 9574 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9575 %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) 9576 ret <vscale x 1 x i64> %1 9577} 9578 9579declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i16>, i64, i64) 9580declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 9581 9582define <vscale x 1 x i64> @test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 9583; CHECK-LABEL: test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i16: 9584; CHECK: # %bb.0: # %entry 9585; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9586; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 9587; CHECK-NEXT: vmv1r.v v8, v10 9588; CHECK-NEXT: ret 9589entry: 9590 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 9591 %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) 9592 ret <vscale x 1 x i64> %1 9593} 9594 9595define <vscale x 1 x i64> @test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9596; CHECK-LABEL: test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i16: 9597; CHECK: # %bb.0: # %entry 9598; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9599; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 9600; CHECK-NEXT: vmv1r.v v8, v10 9601; CHECK-NEXT: ret 9602entry: 9603 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9604 %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) 9605 ret <vscale x 1 x i64> %1 9606} 9607 9608declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i32>, i64, i64) 9609declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 9610 9611define <vscale x 1 x i64> @test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 9612; CHECK-LABEL: test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i32: 9613; CHECK: # %bb.0: # %entry 9614; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9615; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 9616; CHECK-NEXT: vmv1r.v v8, v10 9617; CHECK-NEXT: ret 9618entry: 9619 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 9620 %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) 9621 ret <vscale x 1 x i64> %1 9622} 9623 9624define <vscale x 1 x i64> @test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9625; CHECK-LABEL: test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i32: 9626; CHECK: # %bb.0: # %entry 9627; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9628; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 9629; CHECK-NEXT: vmv1r.v v8, v10 9630; CHECK-NEXT: ret 9631entry: 9632 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9633 %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) 9634 ret <vscale x 1 x i64> %1 9635} 9636 9637declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i64>, i64, i64) 9638declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 9639 9640define <vscale x 1 x i64> @test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 9641; CHECK-LABEL: test_vluxseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i64: 9642; CHECK: # %bb.0: # %entry 9643; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9644; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 9645; CHECK-NEXT: vmv1r.v v8, v10 9646; CHECK-NEXT: ret 9647entry: 9648 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 9649 %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) 9650 ret <vscale x 1 x i64> %1 9651} 9652 9653define <vscale x 1 x i64> @test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9654; CHECK-LABEL: test_vluxseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t_nxv1i64: 9655; CHECK: # %bb.0: # %entry 9656; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9657; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 9658; CHECK-NEXT: vmv1r.v v8, v10 9659; CHECK-NEXT: ret 9660entry: 9661 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9662 %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) 9663 ret <vscale x 1 x i64> %1 9664} 9665 9666declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i8>, i64, i64) 9667declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 9668 9669define <vscale x 1 x i64> @test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 9670; CHECK-LABEL: test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i8: 9671; CHECK: # %bb.0: # %entry 9672; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9673; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 9674; CHECK-NEXT: vmv1r.v v8, v10 9675; CHECK-NEXT: ret 9676entry: 9677 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 9678 %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) 9679 ret <vscale x 1 x i64> %1 9680} 9681 9682define <vscale x 1 x i64> @test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9683; CHECK-LABEL: test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i8: 9684; CHECK: # %bb.0: # %entry 9685; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9686; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 9687; CHECK-NEXT: vmv1r.v v8, v10 9688; CHECK-NEXT: ret 9689entry: 9690 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9691 %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) 9692 ret <vscale x 1 x i64> %1 9693} 9694 9695declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i16>, i64, i64) 9696declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 9697 9698define <vscale x 1 x i64> @test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 9699; CHECK-LABEL: test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i16: 9700; CHECK: # %bb.0: # %entry 9701; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9702; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 9703; CHECK-NEXT: vmv1r.v v8, v10 9704; CHECK-NEXT: ret 9705entry: 9706 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 9707 %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) 9708 ret <vscale x 1 x i64> %1 9709} 9710 9711define <vscale x 1 x i64> @test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9712; CHECK-LABEL: test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i16: 9713; CHECK: # %bb.0: # %entry 9714; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9715; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 9716; CHECK-NEXT: vmv1r.v v8, v10 9717; CHECK-NEXT: ret 9718entry: 9719 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9720 %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) 9721 ret <vscale x 1 x i64> %1 9722} 9723 9724declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i32>, i64, i64) 9725declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 9726 9727define <vscale x 1 x i64> @test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 9728; CHECK-LABEL: test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i32: 9729; CHECK: # %bb.0: # %entry 9730; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9731; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 9732; CHECK-NEXT: vmv1r.v v8, v10 9733; CHECK-NEXT: ret 9734entry: 9735 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 9736 %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) 9737 ret <vscale x 1 x i64> %1 9738} 9739 9740define <vscale x 1 x i64> @test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9741; CHECK-LABEL: test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i32: 9742; CHECK: # %bb.0: # %entry 9743; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9744; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 9745; CHECK-NEXT: vmv1r.v v8, v10 9746; CHECK-NEXT: ret 9747entry: 9748 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9749 %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) 9750 ret <vscale x 1 x i64> %1 9751} 9752 9753declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i64>, i64, i64) 9754declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 9755 9756define <vscale x 1 x i64> @test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 9757; CHECK-LABEL: test_vluxseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i64: 9758; CHECK: # %bb.0: # %entry 9759; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9760; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 9761; CHECK-NEXT: vmv1r.v v8, v10 9762; CHECK-NEXT: ret 9763entry: 9764 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 9765 %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) 9766 ret <vscale x 1 x i64> %1 9767} 9768 9769define <vscale x 1 x i64> @test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9770; CHECK-LABEL: test_vluxseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t_nxv1i64: 9771; CHECK: # %bb.0: # %entry 9772; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9773; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 9774; CHECK-NEXT: vmv1r.v v8, v10 9775; CHECK-NEXT: ret 9776entry: 9777 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9778 %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) 9779 ret <vscale x 1 x i64> %1 9780} 9781 9782declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i8>, i64, i64) 9783declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i8.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i64, i64, i64) 9784 9785define <vscale x 1 x i64> @test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 9786; CHECK-LABEL: test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i8: 9787; CHECK: # %bb.0: # %entry 9788; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9789; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 9790; CHECK-NEXT: vmv1r.v v8, v10 9791; CHECK-NEXT: ret 9792entry: 9793 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 9794 %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) 9795 ret <vscale x 1 x i64> %1 9796} 9797 9798define <vscale x 1 x i64> @test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9799; CHECK-LABEL: test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i8: 9800; CHECK: # %bb.0: # %entry 9801; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9802; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 9803; CHECK-NEXT: vmv1r.v v8, v10 9804; CHECK-NEXT: ret 9805entry: 9806 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9807 %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) 9808 ret <vscale x 1 x i64> %1 9809} 9810 9811declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i16>, i64, i64) 9812declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i16.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i64, i64, i64) 9813 9814define <vscale x 1 x i64> @test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 9815; CHECK-LABEL: test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i16: 9816; CHECK: # %bb.0: # %entry 9817; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9818; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 9819; CHECK-NEXT: vmv1r.v v8, v10 9820; CHECK-NEXT: ret 9821entry: 9822 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 9823 %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) 9824 ret <vscale x 1 x i64> %1 9825} 9826 9827define <vscale x 1 x i64> @test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9828; CHECK-LABEL: test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i16: 9829; CHECK: # %bb.0: # %entry 9830; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9831; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 9832; CHECK-NEXT: vmv1r.v v8, v10 9833; CHECK-NEXT: ret 9834entry: 9835 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9836 %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) 9837 ret <vscale x 1 x i64> %1 9838} 9839 9840declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i32>, i64, i64) 9841declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i32.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i64, i64, i64) 9842 9843define <vscale x 1 x i64> @test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 9844; CHECK-LABEL: test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i32: 9845; CHECK: # %bb.0: # %entry 9846; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9847; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 9848; CHECK-NEXT: vmv1r.v v8, v10 9849; CHECK-NEXT: ret 9850entry: 9851 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 9852 %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) 9853 ret <vscale x 1 x i64> %1 9854} 9855 9856define <vscale x 1 x i64> @test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9857; CHECK-LABEL: test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i32: 9858; CHECK: # %bb.0: # %entry 9859; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9860; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 9861; CHECK-NEXT: vmv1r.v v8, v10 9862; CHECK-NEXT: ret 9863entry: 9864 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9865 %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) 9866 ret <vscale x 1 x i64> %1 9867} 9868 9869declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i64>, i64, i64) 9870declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i64.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, <vscale x 1 x i64>, <vscale x 1 x i1>, i64, i64, i64) 9871 9872define <vscale x 1 x i64> @test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 9873; CHECK-LABEL: test_vluxseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i64: 9874; CHECK: # %bb.0: # %entry 9875; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9876; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 9877; CHECK-NEXT: vmv1r.v v8, v10 9878; CHECK-NEXT: ret 9879entry: 9880 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 9881 %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) 9882 ret <vscale x 1 x i64> %1 9883} 9884 9885define <vscale x 1 x i64> @test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9886; CHECK-LABEL: test_vluxseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t_nxv1i64: 9887; CHECK: # %bb.0: # %entry 9888; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 9889; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 9890; CHECK-NEXT: vmv1r.v v8, v10 9891; CHECK-NEXT: ret 9892entry: 9893 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 9894 %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) 9895 ret <vscale x 1 x i64> %1 9896} 9897 9898 9899define <vscale x 1 x half> @test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 9900; CHECK-LABEL: test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i8: 9901; CHECK: # %bb.0: # %entry 9902; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9903; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 9904; CHECK-NEXT: vmv1r.v v8, v10 9905; CHECK-NEXT: ret 9906entry: 9907 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 9908 %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) 9909 ret <vscale x 1 x half> %1 9910} 9911 9912define <vscale x 1 x half> @test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9913; CHECK-LABEL: test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i8: 9914; CHECK: # %bb.0: # %entry 9915; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9916; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 9917; CHECK-NEXT: vmv1r.v v8, v10 9918; CHECK-NEXT: ret 9919entry: 9920 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 9921 %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) 9922 ret <vscale x 1 x half> %1 9923} 9924 9925 9926define <vscale x 1 x half> @test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 9927; CHECK-LABEL: test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i16: 9928; CHECK: # %bb.0: # %entry 9929; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9930; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 9931; CHECK-NEXT: vmv1r.v v8, v10 9932; CHECK-NEXT: ret 9933entry: 9934 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 9935 %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) 9936 ret <vscale x 1 x half> %1 9937} 9938 9939define <vscale x 1 x half> @test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9940; CHECK-LABEL: test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i16: 9941; CHECK: # %bb.0: # %entry 9942; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9943; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 9944; CHECK-NEXT: vmv1r.v v8, v10 9945; CHECK-NEXT: ret 9946entry: 9947 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 9948 %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) 9949 ret <vscale x 1 x half> %1 9950} 9951 9952 9953define <vscale x 1 x half> @test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 9954; CHECK-LABEL: test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i32: 9955; CHECK: # %bb.0: # %entry 9956; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9957; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 9958; CHECK-NEXT: vmv1r.v v8, v10 9959; CHECK-NEXT: ret 9960entry: 9961 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 9962 %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) 9963 ret <vscale x 1 x half> %1 9964} 9965 9966define <vscale x 1 x half> @test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9967; CHECK-LABEL: test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i32: 9968; CHECK: # %bb.0: # %entry 9969; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9970; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 9971; CHECK-NEXT: vmv1r.v v8, v10 9972; CHECK-NEXT: ret 9973entry: 9974 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 9975 %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) 9976 ret <vscale x 1 x half> %1 9977} 9978 9979 9980define <vscale x 1 x half> @test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 9981; CHECK-LABEL: test_vluxseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i64: 9982; CHECK: # %bb.0: # %entry 9983; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9984; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 9985; CHECK-NEXT: vmv1r.v v8, v10 9986; CHECK-NEXT: ret 9987entry: 9988 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 9989 %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) 9990 ret <vscale x 1 x half> %1 9991} 9992 9993define <vscale x 1 x half> @test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 9994; CHECK-LABEL: test_vluxseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t_nxv1i64: 9995; CHECK: # %bb.0: # %entry 9996; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 9997; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 9998; CHECK-NEXT: vmv1r.v v8, v10 9999; CHECK-NEXT: ret 10000entry: 10001 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10002 %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) 10003 ret <vscale x 1 x half> %1 10004} 10005 10006 10007define <vscale x 2 x half> @test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 10008; CHECK-LABEL: test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i8: 10009; CHECK: # %bb.0: # %entry 10010; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10011; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 10012; CHECK-NEXT: vmv1r.v v8, v10 10013; CHECK-NEXT: ret 10014entry: 10015 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 10016 %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) 10017 ret <vscale x 2 x half> %1 10018} 10019 10020define <vscale x 2 x half> @test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10021; CHECK-LABEL: test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i8: 10022; CHECK: # %bb.0: # %entry 10023; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10024; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 10025; CHECK-NEXT: vmv1r.v v8, v10 10026; CHECK-NEXT: ret 10027entry: 10028 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10029 %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) 10030 ret <vscale x 2 x half> %1 10031} 10032 10033 10034define <vscale x 2 x half> @test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 10035; CHECK-LABEL: test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i16: 10036; CHECK: # %bb.0: # %entry 10037; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10038; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 10039; CHECK-NEXT: vmv1r.v v8, v10 10040; CHECK-NEXT: ret 10041entry: 10042 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 10043 %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) 10044 ret <vscale x 2 x half> %1 10045} 10046 10047define <vscale x 2 x half> @test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10048; CHECK-LABEL: test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i16: 10049; CHECK: # %bb.0: # %entry 10050; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10051; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 10052; CHECK-NEXT: vmv1r.v v8, v10 10053; CHECK-NEXT: ret 10054entry: 10055 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10056 %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) 10057 ret <vscale x 2 x half> %1 10058} 10059 10060 10061define <vscale x 2 x half> @test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 10062; CHECK-LABEL: test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i32: 10063; CHECK: # %bb.0: # %entry 10064; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10065; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 10066; CHECK-NEXT: vmv1r.v v8, v10 10067; CHECK-NEXT: ret 10068entry: 10069 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 10070 %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) 10071 ret <vscale x 2 x half> %1 10072} 10073 10074define <vscale x 2 x half> @test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10075; CHECK-LABEL: test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i32: 10076; CHECK: # %bb.0: # %entry 10077; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10078; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 10079; CHECK-NEXT: vmv1r.v v8, v10 10080; CHECK-NEXT: ret 10081entry: 10082 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10083 %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) 10084 ret <vscale x 2 x half> %1 10085} 10086 10087 10088define <vscale x 2 x half> @test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 10089; CHECK-LABEL: test_vluxseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i64: 10090; CHECK: # %bb.0: # %entry 10091; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10092; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 10093; CHECK-NEXT: vmv1r.v v8, v11 10094; CHECK-NEXT: ret 10095entry: 10096 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 10097 %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) 10098 ret <vscale x 2 x half> %1 10099} 10100 10101define <vscale x 2 x half> @test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10102; CHECK-LABEL: test_vluxseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t_nxv2i64: 10103; CHECK: # %bb.0: # %entry 10104; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10105; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 10106; CHECK-NEXT: vmv1r.v v8, v11 10107; CHECK-NEXT: ret 10108entry: 10109 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10110 %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) 10111 ret <vscale x 2 x half> %1 10112} 10113 10114 10115define <vscale x 4 x half> @test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 10116; CHECK-LABEL: test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i8: 10117; CHECK: # %bb.0: # %entry 10118; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10119; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 10120; CHECK-NEXT: vmv1r.v v8, v10 10121; CHECK-NEXT: ret 10122entry: 10123 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 10124 %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) 10125 ret <vscale x 4 x half> %1 10126} 10127 10128define <vscale x 4 x half> @test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10129; CHECK-LABEL: test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i8: 10130; CHECK: # %bb.0: # %entry 10131; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10132; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 10133; CHECK-NEXT: vmv1r.v v8, v10 10134; CHECK-NEXT: ret 10135entry: 10136 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10137 %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) 10138 ret <vscale x 4 x half> %1 10139} 10140 10141 10142define <vscale x 4 x half> @test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 10143; CHECK-LABEL: test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i16: 10144; CHECK: # %bb.0: # %entry 10145; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10146; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 10147; CHECK-NEXT: vmv1r.v v8, v10 10148; CHECK-NEXT: ret 10149entry: 10150 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 10151 %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) 10152 ret <vscale x 4 x half> %1 10153} 10154 10155define <vscale x 4 x half> @test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10156; CHECK-LABEL: test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i16: 10157; CHECK: # %bb.0: # %entry 10158; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10159; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 10160; CHECK-NEXT: vmv1r.v v8, v10 10161; CHECK-NEXT: ret 10162entry: 10163 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10164 %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) 10165 ret <vscale x 4 x half> %1 10166} 10167 10168 10169define <vscale x 4 x half> @test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 10170; CHECK-LABEL: test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i32: 10171; CHECK: # %bb.0: # %entry 10172; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10173; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 10174; CHECK-NEXT: vmv1r.v v8, v11 10175; CHECK-NEXT: ret 10176entry: 10177 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 10178 %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) 10179 ret <vscale x 4 x half> %1 10180} 10181 10182define <vscale x 4 x half> @test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10183; CHECK-LABEL: test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i32: 10184; CHECK: # %bb.0: # %entry 10185; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10186; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 10187; CHECK-NEXT: vmv1r.v v8, v11 10188; CHECK-NEXT: ret 10189entry: 10190 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10191 %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) 10192 ret <vscale x 4 x half> %1 10193} 10194 10195 10196define <vscale x 4 x half> @test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 10197; CHECK-LABEL: test_vluxseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i64: 10198; CHECK: # %bb.0: # %entry 10199; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10200; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 10201; CHECK-NEXT: vmv1r.v v8, v13 10202; CHECK-NEXT: ret 10203entry: 10204 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 10205 %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) 10206 ret <vscale x 4 x half> %1 10207} 10208 10209define <vscale x 4 x half> @test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10210; CHECK-LABEL: test_vluxseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t_nxv4i64: 10211; CHECK: # %bb.0: # %entry 10212; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10213; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 10214; CHECK-NEXT: vmv1r.v v8, v13 10215; CHECK-NEXT: ret 10216entry: 10217 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10218 %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) 10219 ret <vscale x 4 x half> %1 10220} 10221 10222 10223define <vscale x 8 x half> @test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 10224; CHECK-LABEL: test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i8: 10225; CHECK: # %bb.0: # %entry 10226; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10227; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 10228; CHECK-NEXT: vmv2r.v v8, v12 10229; CHECK-NEXT: ret 10230entry: 10231 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 10232 %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) 10233 ret <vscale x 8 x half> %1 10234} 10235 10236define <vscale x 8 x half> @test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10237; CHECK-LABEL: test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i8: 10238; CHECK: # %bb.0: # %entry 10239; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10240; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 10241; CHECK-NEXT: vmv2r.v v8, v12 10242; CHECK-NEXT: ret 10243entry: 10244 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10245 %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) 10246 ret <vscale x 8 x half> %1 10247} 10248 10249 10250define <vscale x 8 x half> @test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 10251; CHECK-LABEL: test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i16: 10252; CHECK: # %bb.0: # %entry 10253; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10254; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 10255; CHECK-NEXT: vmv2r.v v8, v12 10256; CHECK-NEXT: ret 10257entry: 10258 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 10259 %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) 10260 ret <vscale x 8 x half> %1 10261} 10262 10263define <vscale x 8 x half> @test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10264; CHECK-LABEL: test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i16: 10265; CHECK: # %bb.0: # %entry 10266; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10267; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 10268; CHECK-NEXT: vmv2r.v v8, v12 10269; CHECK-NEXT: ret 10270entry: 10271 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10272 %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) 10273 ret <vscale x 8 x half> %1 10274} 10275 10276 10277define <vscale x 8 x half> @test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 10278; CHECK-LABEL: test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i32: 10279; CHECK: # %bb.0: # %entry 10280; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10281; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 10282; CHECK-NEXT: vmv2r.v v8, v14 10283; CHECK-NEXT: ret 10284entry: 10285 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 10286 %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) 10287 ret <vscale x 8 x half> %1 10288} 10289 10290define <vscale x 8 x half> @test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10291; CHECK-LABEL: test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i32: 10292; CHECK: # %bb.0: # %entry 10293; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10294; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 10295; CHECK-NEXT: vmv2r.v v8, v14 10296; CHECK-NEXT: ret 10297entry: 10298 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10299 %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) 10300 ret <vscale x 8 x half> %1 10301} 10302 10303 10304define <vscale x 8 x half> @test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 10305; CHECK-LABEL: test_vluxseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i64: 10306; CHECK: # %bb.0: # %entry 10307; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10308; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8 10309; CHECK-NEXT: vmv2r.v v8, v18 10310; CHECK-NEXT: ret 10311entry: 10312 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 10313 %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) 10314 ret <vscale x 8 x half> %1 10315} 10316 10317define <vscale x 8 x half> @test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10318; CHECK-LABEL: test_vluxseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t_nxv8i64: 10319; CHECK: # %bb.0: # %entry 10320; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10321; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8, v0.t 10322; CHECK-NEXT: vmv2r.v v8, v18 10323; CHECK-NEXT: ret 10324entry: 10325 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10326 %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) 10327 ret <vscale x 8 x half> %1 10328} 10329 10330 10331define <vscale x 16 x half> @test_vluxseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl) { 10332; CHECK-LABEL: test_vluxseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i8: 10333; CHECK: # %bb.0: # %entry 10334; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 10335; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 10336; CHECK-NEXT: vmv4r.v v8, v16 10337; CHECK-NEXT: ret 10338entry: 10339 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, i64 %vl, i64 4) 10340 %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) 10341 ret <vscale x 16 x half> %1 10342} 10343 10344define <vscale x 16 x half> @test_vluxseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl, <vscale x 16 x i1> %mask) { 10345; CHECK-LABEL: test_vluxseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i8: 10346; CHECK: # %bb.0: # %entry 10347; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 10348; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 10349; CHECK-NEXT: vmv4r.v v8, v16 10350; CHECK-NEXT: ret 10351entry: 10352 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 10353 %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) 10354 ret <vscale x 16 x half> %1 10355} 10356 10357 10358define <vscale x 16 x half> @test_vluxseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl) { 10359; CHECK-LABEL: test_vluxseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i16: 10360; CHECK: # %bb.0: # %entry 10361; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 10362; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 10363; CHECK-NEXT: vmv4r.v v8, v16 10364; CHECK-NEXT: ret 10365entry: 10366 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, i64 %vl, i64 4) 10367 %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) 10368 ret <vscale x 16 x half> %1 10369} 10370 10371define <vscale x 16 x half> @test_vluxseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl, <vscale x 16 x i1> %mask) { 10372; CHECK-LABEL: test_vluxseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i16: 10373; CHECK: # %bb.0: # %entry 10374; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 10375; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 10376; CHECK-NEXT: vmv4r.v v8, v16 10377; CHECK-NEXT: ret 10378entry: 10379 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 10380 %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) 10381 ret <vscale x 16 x half> %1 10382} 10383 10384 10385define <vscale x 16 x half> @test_vluxseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl) { 10386; CHECK-LABEL: test_vluxseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i32: 10387; CHECK: # %bb.0: # %entry 10388; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 10389; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8 10390; CHECK-NEXT: vmv4r.v v8, v20 10391; CHECK-NEXT: ret 10392entry: 10393 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, i64 %vl, i64 4) 10394 %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) 10395 ret <vscale x 16 x half> %1 10396} 10397 10398define <vscale x 16 x half> @test_vluxseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl, <vscale x 16 x i1> %mask) { 10399; CHECK-LABEL: test_vluxseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t_nxv16i32: 10400; CHECK: # %bb.0: # %entry 10401; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 10402; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8, v0.t 10403; CHECK-NEXT: vmv4r.v v8, v20 10404; CHECK-NEXT: ret 10405entry: 10406 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 10407 %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) 10408 ret <vscale x 16 x half> %1 10409} 10410 10411 10412define <vscale x 1 x half> @test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 10413; CHECK-LABEL: test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i8: 10414; CHECK: # %bb.0: # %entry 10415; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10416; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 10417; CHECK-NEXT: vmv1r.v v8, v10 10418; CHECK-NEXT: ret 10419entry: 10420 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 10421 %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) 10422 ret <vscale x 1 x half> %1 10423} 10424 10425define <vscale x 1 x half> @test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10426; CHECK-LABEL: test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i8: 10427; CHECK: # %bb.0: # %entry 10428; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10429; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 10430; CHECK-NEXT: vmv1r.v v8, v10 10431; CHECK-NEXT: ret 10432entry: 10433 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10434 %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) 10435 ret <vscale x 1 x half> %1 10436} 10437 10438 10439define <vscale x 1 x half> @test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 10440; CHECK-LABEL: test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i16: 10441; CHECK: # %bb.0: # %entry 10442; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10443; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 10444; CHECK-NEXT: vmv1r.v v8, v10 10445; CHECK-NEXT: ret 10446entry: 10447 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 10448 %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) 10449 ret <vscale x 1 x half> %1 10450} 10451 10452define <vscale x 1 x half> @test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10453; CHECK-LABEL: test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i16: 10454; CHECK: # %bb.0: # %entry 10455; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10456; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 10457; CHECK-NEXT: vmv1r.v v8, v10 10458; CHECK-NEXT: ret 10459entry: 10460 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10461 %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) 10462 ret <vscale x 1 x half> %1 10463} 10464 10465 10466define <vscale x 1 x half> @test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 10467; CHECK-LABEL: test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i32: 10468; CHECK: # %bb.0: # %entry 10469; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10470; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 10471; CHECK-NEXT: vmv1r.v v8, v10 10472; CHECK-NEXT: ret 10473entry: 10474 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 10475 %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) 10476 ret <vscale x 1 x half> %1 10477} 10478 10479define <vscale x 1 x half> @test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10480; CHECK-LABEL: test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i32: 10481; CHECK: # %bb.0: # %entry 10482; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10483; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 10484; CHECK-NEXT: vmv1r.v v8, v10 10485; CHECK-NEXT: ret 10486entry: 10487 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10488 %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) 10489 ret <vscale x 1 x half> %1 10490} 10491 10492 10493define <vscale x 1 x half> @test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 10494; CHECK-LABEL: test_vluxseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i64: 10495; CHECK: # %bb.0: # %entry 10496; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10497; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 10498; CHECK-NEXT: vmv1r.v v8, v10 10499; CHECK-NEXT: ret 10500entry: 10501 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 10502 %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) 10503 ret <vscale x 1 x half> %1 10504} 10505 10506define <vscale x 1 x half> @test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10507; CHECK-LABEL: test_vluxseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t_nxv1i64: 10508; CHECK: # %bb.0: # %entry 10509; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10510; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 10511; CHECK-NEXT: vmv1r.v v8, v10 10512; CHECK-NEXT: ret 10513entry: 10514 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10515 %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) 10516 ret <vscale x 1 x half> %1 10517} 10518 10519 10520define <vscale x 2 x half> @test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 10521; CHECK-LABEL: test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i8: 10522; CHECK: # %bb.0: # %entry 10523; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10524; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 10525; CHECK-NEXT: vmv1r.v v8, v10 10526; CHECK-NEXT: ret 10527entry: 10528 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 10529 %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) 10530 ret <vscale x 2 x half> %1 10531} 10532 10533define <vscale x 2 x half> @test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10534; CHECK-LABEL: test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i8: 10535; CHECK: # %bb.0: # %entry 10536; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10537; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 10538; CHECK-NEXT: vmv1r.v v8, v10 10539; CHECK-NEXT: ret 10540entry: 10541 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10542 %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) 10543 ret <vscale x 2 x half> %1 10544} 10545 10546 10547define <vscale x 2 x half> @test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 10548; CHECK-LABEL: test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i16: 10549; CHECK: # %bb.0: # %entry 10550; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10551; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 10552; CHECK-NEXT: vmv1r.v v8, v10 10553; CHECK-NEXT: ret 10554entry: 10555 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 10556 %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) 10557 ret <vscale x 2 x half> %1 10558} 10559 10560define <vscale x 2 x half> @test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10561; CHECK-LABEL: test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i16: 10562; CHECK: # %bb.0: # %entry 10563; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10564; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 10565; CHECK-NEXT: vmv1r.v v8, v10 10566; CHECK-NEXT: ret 10567entry: 10568 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10569 %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) 10570 ret <vscale x 2 x half> %1 10571} 10572 10573 10574define <vscale x 2 x half> @test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 10575; CHECK-LABEL: test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i32: 10576; CHECK: # %bb.0: # %entry 10577; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10578; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 10579; CHECK-NEXT: vmv1r.v v8, v10 10580; CHECK-NEXT: ret 10581entry: 10582 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 10583 %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) 10584 ret <vscale x 2 x half> %1 10585} 10586 10587define <vscale x 2 x half> @test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10588; CHECK-LABEL: test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i32: 10589; CHECK: # %bb.0: # %entry 10590; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10591; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 10592; CHECK-NEXT: vmv1r.v v8, v10 10593; CHECK-NEXT: ret 10594entry: 10595 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10596 %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) 10597 ret <vscale x 2 x half> %1 10598} 10599 10600 10601define <vscale x 2 x half> @test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 10602; CHECK-LABEL: test_vluxseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i64: 10603; CHECK: # %bb.0: # %entry 10604; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10605; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 10606; CHECK-NEXT: vmv1r.v v8, v11 10607; CHECK-NEXT: ret 10608entry: 10609 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 10610 %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) 10611 ret <vscale x 2 x half> %1 10612} 10613 10614define <vscale x 2 x half> @test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10615; CHECK-LABEL: test_vluxseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t_nxv2i64: 10616; CHECK: # %bb.0: # %entry 10617; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10618; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 10619; CHECK-NEXT: vmv1r.v v8, v11 10620; CHECK-NEXT: ret 10621entry: 10622 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10623 %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) 10624 ret <vscale x 2 x half> %1 10625} 10626 10627 10628define <vscale x 4 x half> @test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 10629; CHECK-LABEL: test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i8: 10630; CHECK: # %bb.0: # %entry 10631; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10632; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 10633; CHECK-NEXT: vmv1r.v v8, v10 10634; CHECK-NEXT: ret 10635entry: 10636 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 10637 %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) 10638 ret <vscale x 4 x half> %1 10639} 10640 10641define <vscale x 4 x half> @test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10642; CHECK-LABEL: test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i8: 10643; CHECK: # %bb.0: # %entry 10644; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10645; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 10646; CHECK-NEXT: vmv1r.v v8, v10 10647; CHECK-NEXT: ret 10648entry: 10649 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10650 %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) 10651 ret <vscale x 4 x half> %1 10652} 10653 10654 10655define <vscale x 4 x half> @test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 10656; CHECK-LABEL: test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i16: 10657; CHECK: # %bb.0: # %entry 10658; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10659; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 10660; CHECK-NEXT: vmv1r.v v8, v10 10661; CHECK-NEXT: ret 10662entry: 10663 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 10664 %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) 10665 ret <vscale x 4 x half> %1 10666} 10667 10668define <vscale x 4 x half> @test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10669; CHECK-LABEL: test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i16: 10670; CHECK: # %bb.0: # %entry 10671; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10672; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 10673; CHECK-NEXT: vmv1r.v v8, v10 10674; CHECK-NEXT: ret 10675entry: 10676 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10677 %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) 10678 ret <vscale x 4 x half> %1 10679} 10680 10681 10682define <vscale x 4 x half> @test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 10683; CHECK-LABEL: test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i32: 10684; CHECK: # %bb.0: # %entry 10685; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10686; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 10687; CHECK-NEXT: vmv1r.v v8, v11 10688; CHECK-NEXT: ret 10689entry: 10690 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 10691 %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) 10692 ret <vscale x 4 x half> %1 10693} 10694 10695define <vscale x 4 x half> @test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10696; CHECK-LABEL: test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i32: 10697; CHECK: # %bb.0: # %entry 10698; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10699; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 10700; CHECK-NEXT: vmv1r.v v8, v11 10701; CHECK-NEXT: ret 10702entry: 10703 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10704 %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) 10705 ret <vscale x 4 x half> %1 10706} 10707 10708 10709define <vscale x 4 x half> @test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 10710; CHECK-LABEL: test_vluxseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i64: 10711; CHECK: # %bb.0: # %entry 10712; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10713; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8 10714; CHECK-NEXT: vmv1r.v v8, v13 10715; CHECK-NEXT: ret 10716entry: 10717 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 10718 %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) 10719 ret <vscale x 4 x half> %1 10720} 10721 10722define <vscale x 4 x half> @test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 10723; CHECK-LABEL: test_vluxseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t_nxv4i64: 10724; CHECK: # %bb.0: # %entry 10725; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 10726; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8, v0.t 10727; CHECK-NEXT: vmv1r.v v8, v13 10728; CHECK-NEXT: ret 10729entry: 10730 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 10731 %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) 10732 ret <vscale x 4 x half> %1 10733} 10734 10735 10736define <vscale x 8 x half> @test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 10737; CHECK-LABEL: test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i8: 10738; CHECK: # %bb.0: # %entry 10739; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10740; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 10741; CHECK-NEXT: vmv2r.v v8, v12 10742; CHECK-NEXT: ret 10743entry: 10744 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 10745 %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) 10746 ret <vscale x 8 x half> %1 10747} 10748 10749define <vscale x 8 x half> @test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10750; CHECK-LABEL: test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i8: 10751; CHECK: # %bb.0: # %entry 10752; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10753; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 10754; CHECK-NEXT: vmv2r.v v8, v12 10755; CHECK-NEXT: ret 10756entry: 10757 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10758 %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) 10759 ret <vscale x 8 x half> %1 10760} 10761 10762 10763define <vscale x 8 x half> @test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 10764; CHECK-LABEL: test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i16: 10765; CHECK: # %bb.0: # %entry 10766; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10767; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 10768; CHECK-NEXT: vmv2r.v v8, v12 10769; CHECK-NEXT: ret 10770entry: 10771 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 10772 %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) 10773 ret <vscale x 8 x half> %1 10774} 10775 10776define <vscale x 8 x half> @test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10777; CHECK-LABEL: test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i16: 10778; CHECK: # %bb.0: # %entry 10779; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10780; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 10781; CHECK-NEXT: vmv2r.v v8, v12 10782; CHECK-NEXT: ret 10783entry: 10784 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10785 %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) 10786 ret <vscale x 8 x half> %1 10787} 10788 10789 10790define <vscale x 8 x half> @test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 10791; CHECK-LABEL: test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i32: 10792; CHECK: # %bb.0: # %entry 10793; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10794; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8 10795; CHECK-NEXT: vmv2r.v v8, v14 10796; CHECK-NEXT: ret 10797entry: 10798 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 10799 %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) 10800 ret <vscale x 8 x half> %1 10801} 10802 10803define <vscale x 8 x half> @test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10804; CHECK-LABEL: test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i32: 10805; CHECK: # %bb.0: # %entry 10806; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10807; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8, v0.t 10808; CHECK-NEXT: vmv2r.v v8, v14 10809; CHECK-NEXT: ret 10810entry: 10811 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10812 %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) 10813 ret <vscale x 8 x half> %1 10814} 10815 10816 10817define <vscale x 8 x half> @test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 10818; CHECK-LABEL: test_vluxseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i64: 10819; CHECK: # %bb.0: # %entry 10820; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10821; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8 10822; CHECK-NEXT: vmv2r.v v8, v18 10823; CHECK-NEXT: ret 10824entry: 10825 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 10826 %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) 10827 ret <vscale x 8 x half> %1 10828} 10829 10830define <vscale x 8 x half> @test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 10831; CHECK-LABEL: test_vluxseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t_nxv8i64: 10832; CHECK: # %bb.0: # %entry 10833; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 10834; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8, v0.t 10835; CHECK-NEXT: vmv2r.v v8, v18 10836; CHECK-NEXT: ret 10837entry: 10838 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 10839 %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) 10840 ret <vscale x 8 x half> %1 10841} 10842 10843 10844define <vscale x 1 x half> @test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 10845; CHECK-LABEL: test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i8: 10846; CHECK: # %bb.0: # %entry 10847; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10848; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 10849; CHECK-NEXT: vmv1r.v v8, v10 10850; CHECK-NEXT: ret 10851entry: 10852 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 10853 %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) 10854 ret <vscale x 1 x half> %1 10855} 10856 10857define <vscale x 1 x half> @test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10858; CHECK-LABEL: test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i8: 10859; CHECK: # %bb.0: # %entry 10860; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10861; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 10862; CHECK-NEXT: vmv1r.v v8, v10 10863; CHECK-NEXT: ret 10864entry: 10865 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10866 %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) 10867 ret <vscale x 1 x half> %1 10868} 10869 10870 10871define <vscale x 1 x half> @test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 10872; CHECK-LABEL: test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i16: 10873; CHECK: # %bb.0: # %entry 10874; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10875; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 10876; CHECK-NEXT: vmv1r.v v8, v10 10877; CHECK-NEXT: ret 10878entry: 10879 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 10880 %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) 10881 ret <vscale x 1 x half> %1 10882} 10883 10884define <vscale x 1 x half> @test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10885; CHECK-LABEL: test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i16: 10886; CHECK: # %bb.0: # %entry 10887; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10888; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 10889; CHECK-NEXT: vmv1r.v v8, v10 10890; CHECK-NEXT: ret 10891entry: 10892 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10893 %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) 10894 ret <vscale x 1 x half> %1 10895} 10896 10897 10898define <vscale x 1 x half> @test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 10899; CHECK-LABEL: test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i32: 10900; CHECK: # %bb.0: # %entry 10901; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10902; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 10903; CHECK-NEXT: vmv1r.v v8, v10 10904; CHECK-NEXT: ret 10905entry: 10906 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 10907 %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) 10908 ret <vscale x 1 x half> %1 10909} 10910 10911define <vscale x 1 x half> @test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10912; CHECK-LABEL: test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i32: 10913; CHECK: # %bb.0: # %entry 10914; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10915; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 10916; CHECK-NEXT: vmv1r.v v8, v10 10917; CHECK-NEXT: ret 10918entry: 10919 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10920 %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) 10921 ret <vscale x 1 x half> %1 10922} 10923 10924 10925define <vscale x 1 x half> @test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 10926; CHECK-LABEL: test_vluxseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i64: 10927; CHECK: # %bb.0: # %entry 10928; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10929; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 10930; CHECK-NEXT: vmv1r.v v8, v10 10931; CHECK-NEXT: ret 10932entry: 10933 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 10934 %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) 10935 ret <vscale x 1 x half> %1 10936} 10937 10938define <vscale x 1 x half> @test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 10939; CHECK-LABEL: test_vluxseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t_nxv1i64: 10940; CHECK: # %bb.0: # %entry 10941; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 10942; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 10943; CHECK-NEXT: vmv1r.v v8, v10 10944; CHECK-NEXT: ret 10945entry: 10946 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 10947 %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) 10948 ret <vscale x 1 x half> %1 10949} 10950 10951 10952define <vscale x 2 x half> @test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 10953; CHECK-LABEL: test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i8: 10954; CHECK: # %bb.0: # %entry 10955; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10956; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 10957; CHECK-NEXT: vmv1r.v v8, v10 10958; CHECK-NEXT: ret 10959entry: 10960 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 10961 %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) 10962 ret <vscale x 2 x half> %1 10963} 10964 10965define <vscale x 2 x half> @test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10966; CHECK-LABEL: test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i8: 10967; CHECK: # %bb.0: # %entry 10968; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10969; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 10970; CHECK-NEXT: vmv1r.v v8, v10 10971; CHECK-NEXT: ret 10972entry: 10973 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 10974 %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) 10975 ret <vscale x 2 x half> %1 10976} 10977 10978 10979define <vscale x 2 x half> @test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 10980; CHECK-LABEL: test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i16: 10981; CHECK: # %bb.0: # %entry 10982; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10983; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 10984; CHECK-NEXT: vmv1r.v v8, v10 10985; CHECK-NEXT: ret 10986entry: 10987 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 10988 %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) 10989 ret <vscale x 2 x half> %1 10990} 10991 10992define <vscale x 2 x half> @test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 10993; CHECK-LABEL: test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i16: 10994; CHECK: # %bb.0: # %entry 10995; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 10996; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 10997; CHECK-NEXT: vmv1r.v v8, v10 10998; CHECK-NEXT: ret 10999entry: 11000 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11001 %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) 11002 ret <vscale x 2 x half> %1 11003} 11004 11005 11006define <vscale x 2 x half> @test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 11007; CHECK-LABEL: test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i32: 11008; CHECK: # %bb.0: # %entry 11009; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11010; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 11011; CHECK-NEXT: vmv1r.v v8, v10 11012; CHECK-NEXT: ret 11013entry: 11014 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 11015 %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) 11016 ret <vscale x 2 x half> %1 11017} 11018 11019define <vscale x 2 x half> @test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11020; CHECK-LABEL: test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i32: 11021; CHECK: # %bb.0: # %entry 11022; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11023; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 11024; CHECK-NEXT: vmv1r.v v8, v10 11025; CHECK-NEXT: ret 11026entry: 11027 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11028 %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) 11029 ret <vscale x 2 x half> %1 11030} 11031 11032 11033define <vscale x 2 x half> @test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 11034; CHECK-LABEL: test_vluxseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i64: 11035; CHECK: # %bb.0: # %entry 11036; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11037; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 11038; CHECK-NEXT: vmv1r.v v8, v11 11039; CHECK-NEXT: ret 11040entry: 11041 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 11042 %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) 11043 ret <vscale x 2 x half> %1 11044} 11045 11046define <vscale x 2 x half> @test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11047; CHECK-LABEL: test_vluxseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t_nxv2i64: 11048; CHECK: # %bb.0: # %entry 11049; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11050; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 11051; CHECK-NEXT: vmv1r.v v8, v11 11052; CHECK-NEXT: ret 11053entry: 11054 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11055 %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) 11056 ret <vscale x 2 x half> %1 11057} 11058 11059 11060define <vscale x 4 x half> @test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 11061; CHECK-LABEL: test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i8: 11062; CHECK: # %bb.0: # %entry 11063; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11064; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 11065; CHECK-NEXT: vmv1r.v v8, v10 11066; CHECK-NEXT: ret 11067entry: 11068 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 11069 %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) 11070 ret <vscale x 4 x half> %1 11071} 11072 11073define <vscale x 4 x half> @test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11074; CHECK-LABEL: test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i8: 11075; CHECK: # %bb.0: # %entry 11076; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11077; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 11078; CHECK-NEXT: vmv1r.v v8, v10 11079; CHECK-NEXT: ret 11080entry: 11081 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11082 %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) 11083 ret <vscale x 4 x half> %1 11084} 11085 11086 11087define <vscale x 4 x half> @test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 11088; CHECK-LABEL: test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i16: 11089; CHECK: # %bb.0: # %entry 11090; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11091; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 11092; CHECK-NEXT: vmv1r.v v8, v10 11093; CHECK-NEXT: ret 11094entry: 11095 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 11096 %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) 11097 ret <vscale x 4 x half> %1 11098} 11099 11100define <vscale x 4 x half> @test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11101; CHECK-LABEL: test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i16: 11102; CHECK: # %bb.0: # %entry 11103; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11104; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 11105; CHECK-NEXT: vmv1r.v v8, v10 11106; CHECK-NEXT: ret 11107entry: 11108 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11109 %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) 11110 ret <vscale x 4 x half> %1 11111} 11112 11113 11114define <vscale x 4 x half> @test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 11115; CHECK-LABEL: test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i32: 11116; CHECK: # %bb.0: # %entry 11117; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11118; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 11119; CHECK-NEXT: vmv1r.v v8, v11 11120; CHECK-NEXT: ret 11121entry: 11122 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 11123 %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) 11124 ret <vscale x 4 x half> %1 11125} 11126 11127define <vscale x 4 x half> @test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11128; CHECK-LABEL: test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i32: 11129; CHECK: # %bb.0: # %entry 11130; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11131; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 11132; CHECK-NEXT: vmv1r.v v8, v11 11133; CHECK-NEXT: ret 11134entry: 11135 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11136 %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) 11137 ret <vscale x 4 x half> %1 11138} 11139 11140 11141define <vscale x 4 x half> @test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 11142; CHECK-LABEL: test_vluxseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i64: 11143; CHECK: # %bb.0: # %entry 11144; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11145; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8 11146; CHECK-NEXT: vmv1r.v v8, v13 11147; CHECK-NEXT: ret 11148entry: 11149 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 11150 %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) 11151 ret <vscale x 4 x half> %1 11152} 11153 11154define <vscale x 4 x half> @test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11155; CHECK-LABEL: test_vluxseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t_nxv4i64: 11156; CHECK: # %bb.0: # %entry 11157; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11158; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8, v0.t 11159; CHECK-NEXT: vmv1r.v v8, v13 11160; CHECK-NEXT: ret 11161entry: 11162 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11163 %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) 11164 ret <vscale x 4 x half> %1 11165} 11166 11167 11168define <vscale x 8 x half> @test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 11169; CHECK-LABEL: test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i8: 11170; CHECK: # %bb.0: # %entry 11171; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11172; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 11173; CHECK-NEXT: vmv2r.v v8, v12 11174; CHECK-NEXT: ret 11175entry: 11176 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 11177 %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) 11178 ret <vscale x 8 x half> %1 11179} 11180 11181define <vscale x 8 x half> @test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 11182; CHECK-LABEL: test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i8: 11183; CHECK: # %bb.0: # %entry 11184; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11185; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 11186; CHECK-NEXT: vmv2r.v v8, v12 11187; CHECK-NEXT: ret 11188entry: 11189 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 11190 %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) 11191 ret <vscale x 8 x half> %1 11192} 11193 11194 11195define <vscale x 8 x half> @test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 11196; CHECK-LABEL: test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i16: 11197; CHECK: # %bb.0: # %entry 11198; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11199; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 11200; CHECK-NEXT: vmv2r.v v8, v12 11201; CHECK-NEXT: ret 11202entry: 11203 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 11204 %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) 11205 ret <vscale x 8 x half> %1 11206} 11207 11208define <vscale x 8 x half> @test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 11209; CHECK-LABEL: test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i16: 11210; CHECK: # %bb.0: # %entry 11211; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11212; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 11213; CHECK-NEXT: vmv2r.v v8, v12 11214; CHECK-NEXT: ret 11215entry: 11216 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 11217 %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) 11218 ret <vscale x 8 x half> %1 11219} 11220 11221 11222define <vscale x 8 x half> @test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 11223; CHECK-LABEL: test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i32: 11224; CHECK: # %bb.0: # %entry 11225; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11226; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8 11227; CHECK-NEXT: vmv2r.v v8, v14 11228; CHECK-NEXT: ret 11229entry: 11230 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 11231 %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) 11232 ret <vscale x 8 x half> %1 11233} 11234 11235define <vscale x 8 x half> @test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 11236; CHECK-LABEL: test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i32: 11237; CHECK: # %bb.0: # %entry 11238; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11239; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8, v0.t 11240; CHECK-NEXT: vmv2r.v v8, v14 11241; CHECK-NEXT: ret 11242entry: 11243 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 11244 %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) 11245 ret <vscale x 8 x half> %1 11246} 11247 11248 11249define <vscale x 8 x half> @test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 11250; CHECK-LABEL: test_vluxseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i64: 11251; CHECK: # %bb.0: # %entry 11252; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11253; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8 11254; CHECK-NEXT: vmv2r.v v8, v18 11255; CHECK-NEXT: ret 11256entry: 11257 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 11258 %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) 11259 ret <vscale x 8 x half> %1 11260} 11261 11262define <vscale x 8 x half> @test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 11263; CHECK-LABEL: test_vluxseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t_nxv8i64: 11264; CHECK: # %bb.0: # %entry 11265; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 11266; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8, v0.t 11267; CHECK-NEXT: vmv2r.v v8, v18 11268; CHECK-NEXT: ret 11269entry: 11270 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 11271 %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) 11272 ret <vscale x 8 x half> %1 11273} 11274 11275 11276define <vscale x 1 x half> @test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 11277; CHECK-LABEL: test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i8: 11278; CHECK: # %bb.0: # %entry 11279; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11280; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 11281; CHECK-NEXT: vmv1r.v v8, v10 11282; CHECK-NEXT: ret 11283entry: 11284 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 11285 %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) 11286 ret <vscale x 1 x half> %1 11287} 11288 11289define <vscale x 1 x half> @test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11290; CHECK-LABEL: test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i8: 11291; CHECK: # %bb.0: # %entry 11292; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11293; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 11294; CHECK-NEXT: vmv1r.v v8, v10 11295; CHECK-NEXT: ret 11296entry: 11297 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11298 %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) 11299 ret <vscale x 1 x half> %1 11300} 11301 11302 11303define <vscale x 1 x half> @test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 11304; CHECK-LABEL: test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i16: 11305; CHECK: # %bb.0: # %entry 11306; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11307; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 11308; CHECK-NEXT: vmv1r.v v8, v10 11309; CHECK-NEXT: ret 11310entry: 11311 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 11312 %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) 11313 ret <vscale x 1 x half> %1 11314} 11315 11316define <vscale x 1 x half> @test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11317; CHECK-LABEL: test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i16: 11318; CHECK: # %bb.0: # %entry 11319; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11320; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 11321; CHECK-NEXT: vmv1r.v v8, v10 11322; CHECK-NEXT: ret 11323entry: 11324 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11325 %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) 11326 ret <vscale x 1 x half> %1 11327} 11328 11329 11330define <vscale x 1 x half> @test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 11331; CHECK-LABEL: test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i32: 11332; CHECK: # %bb.0: # %entry 11333; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11334; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 11335; CHECK-NEXT: vmv1r.v v8, v10 11336; CHECK-NEXT: ret 11337entry: 11338 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 11339 %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) 11340 ret <vscale x 1 x half> %1 11341} 11342 11343define <vscale x 1 x half> @test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11344; CHECK-LABEL: test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i32: 11345; CHECK: # %bb.0: # %entry 11346; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11347; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 11348; CHECK-NEXT: vmv1r.v v8, v10 11349; CHECK-NEXT: ret 11350entry: 11351 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11352 %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) 11353 ret <vscale x 1 x half> %1 11354} 11355 11356 11357define <vscale x 1 x half> @test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 11358; CHECK-LABEL: test_vluxseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i64: 11359; CHECK: # %bb.0: # %entry 11360; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11361; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 11362; CHECK-NEXT: vmv1r.v v8, v10 11363; CHECK-NEXT: ret 11364entry: 11365 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 11366 %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) 11367 ret <vscale x 1 x half> %1 11368} 11369 11370define <vscale x 1 x half> @test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11371; CHECK-LABEL: test_vluxseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t_nxv1i64: 11372; CHECK: # %bb.0: # %entry 11373; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11374; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 11375; CHECK-NEXT: vmv1r.v v8, v10 11376; CHECK-NEXT: ret 11377entry: 11378 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11379 %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) 11380 ret <vscale x 1 x half> %1 11381} 11382 11383 11384define <vscale x 2 x half> @test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 11385; CHECK-LABEL: test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i8: 11386; CHECK: # %bb.0: # %entry 11387; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11388; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 11389; CHECK-NEXT: vmv1r.v v8, v10 11390; CHECK-NEXT: ret 11391entry: 11392 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 11393 %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) 11394 ret <vscale x 2 x half> %1 11395} 11396 11397define <vscale x 2 x half> @test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11398; CHECK-LABEL: test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i8: 11399; CHECK: # %bb.0: # %entry 11400; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11401; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 11402; CHECK-NEXT: vmv1r.v v8, v10 11403; CHECK-NEXT: ret 11404entry: 11405 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11406 %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) 11407 ret <vscale x 2 x half> %1 11408} 11409 11410 11411define <vscale x 2 x half> @test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 11412; CHECK-LABEL: test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i16: 11413; CHECK: # %bb.0: # %entry 11414; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11415; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 11416; CHECK-NEXT: vmv1r.v v8, v10 11417; CHECK-NEXT: ret 11418entry: 11419 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 11420 %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) 11421 ret <vscale x 2 x half> %1 11422} 11423 11424define <vscale x 2 x half> @test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11425; CHECK-LABEL: test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i16: 11426; CHECK: # %bb.0: # %entry 11427; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11428; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 11429; CHECK-NEXT: vmv1r.v v8, v10 11430; CHECK-NEXT: ret 11431entry: 11432 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11433 %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) 11434 ret <vscale x 2 x half> %1 11435} 11436 11437 11438define <vscale x 2 x half> @test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 11439; CHECK-LABEL: test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i32: 11440; CHECK: # %bb.0: # %entry 11441; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11442; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 11443; CHECK-NEXT: vmv1r.v v8, v10 11444; CHECK-NEXT: ret 11445entry: 11446 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 11447 %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) 11448 ret <vscale x 2 x half> %1 11449} 11450 11451define <vscale x 2 x half> @test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11452; CHECK-LABEL: test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i32: 11453; CHECK: # %bb.0: # %entry 11454; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11455; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 11456; CHECK-NEXT: vmv1r.v v8, v10 11457; CHECK-NEXT: ret 11458entry: 11459 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11460 %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) 11461 ret <vscale x 2 x half> %1 11462} 11463 11464 11465define <vscale x 2 x half> @test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 11466; CHECK-LABEL: test_vluxseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i64: 11467; CHECK: # %bb.0: # %entry 11468; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11469; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8 11470; CHECK-NEXT: vmv1r.v v8, v11 11471; CHECK-NEXT: ret 11472entry: 11473 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 11474 %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) 11475 ret <vscale x 2 x half> %1 11476} 11477 11478define <vscale x 2 x half> @test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11479; CHECK-LABEL: test_vluxseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t_nxv2i64: 11480; CHECK: # %bb.0: # %entry 11481; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11482; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8, v0.t 11483; CHECK-NEXT: vmv1r.v v8, v11 11484; CHECK-NEXT: ret 11485entry: 11486 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11487 %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) 11488 ret <vscale x 2 x half> %1 11489} 11490 11491 11492define <vscale x 4 x half> @test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 11493; CHECK-LABEL: test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i8: 11494; CHECK: # %bb.0: # %entry 11495; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11496; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 11497; CHECK-NEXT: vmv1r.v v8, v10 11498; CHECK-NEXT: ret 11499entry: 11500 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 11501 %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) 11502 ret <vscale x 4 x half> %1 11503} 11504 11505define <vscale x 4 x half> @test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11506; CHECK-LABEL: test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i8: 11507; CHECK: # %bb.0: # %entry 11508; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11509; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 11510; CHECK-NEXT: vmv1r.v v8, v10 11511; CHECK-NEXT: ret 11512entry: 11513 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11514 %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) 11515 ret <vscale x 4 x half> %1 11516} 11517 11518 11519define <vscale x 4 x half> @test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 11520; CHECK-LABEL: test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i16: 11521; CHECK: # %bb.0: # %entry 11522; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11523; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 11524; CHECK-NEXT: vmv1r.v v8, v10 11525; CHECK-NEXT: ret 11526entry: 11527 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 11528 %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) 11529 ret <vscale x 4 x half> %1 11530} 11531 11532define <vscale x 4 x half> @test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11533; CHECK-LABEL: test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i16: 11534; CHECK: # %bb.0: # %entry 11535; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11536; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 11537; CHECK-NEXT: vmv1r.v v8, v10 11538; CHECK-NEXT: ret 11539entry: 11540 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11541 %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) 11542 ret <vscale x 4 x half> %1 11543} 11544 11545 11546define <vscale x 4 x half> @test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 11547; CHECK-LABEL: test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i32: 11548; CHECK: # %bb.0: # %entry 11549; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11550; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8 11551; CHECK-NEXT: vmv1r.v v8, v11 11552; CHECK-NEXT: ret 11553entry: 11554 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 11555 %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) 11556 ret <vscale x 4 x half> %1 11557} 11558 11559define <vscale x 4 x half> @test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11560; CHECK-LABEL: test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i32: 11561; CHECK: # %bb.0: # %entry 11562; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11563; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8, v0.t 11564; CHECK-NEXT: vmv1r.v v8, v11 11565; CHECK-NEXT: ret 11566entry: 11567 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11568 %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) 11569 ret <vscale x 4 x half> %1 11570} 11571 11572 11573define <vscale x 4 x half> @test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 11574; CHECK-LABEL: test_vluxseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i64: 11575; CHECK: # %bb.0: # %entry 11576; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11577; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8 11578; CHECK-NEXT: vmv1r.v v8, v13 11579; CHECK-NEXT: ret 11580entry: 11581 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 11582 %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) 11583 ret <vscale x 4 x half> %1 11584} 11585 11586define <vscale x 4 x half> @test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11587; CHECK-LABEL: test_vluxseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t_nxv4i64: 11588; CHECK: # %bb.0: # %entry 11589; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11590; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8, v0.t 11591; CHECK-NEXT: vmv1r.v v8, v13 11592; CHECK-NEXT: ret 11593entry: 11594 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11595 %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) 11596 ret <vscale x 4 x half> %1 11597} 11598 11599 11600define <vscale x 1 x half> @test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 11601; CHECK-LABEL: test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i8: 11602; CHECK: # %bb.0: # %entry 11603; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11604; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 11605; CHECK-NEXT: vmv1r.v v8, v10 11606; CHECK-NEXT: ret 11607entry: 11608 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 11609 %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) 11610 ret <vscale x 1 x half> %1 11611} 11612 11613define <vscale x 1 x half> @test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11614; CHECK-LABEL: test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i8: 11615; CHECK: # %bb.0: # %entry 11616; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11617; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 11618; CHECK-NEXT: vmv1r.v v8, v10 11619; CHECK-NEXT: ret 11620entry: 11621 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11622 %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) 11623 ret <vscale x 1 x half> %1 11624} 11625 11626 11627define <vscale x 1 x half> @test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 11628; CHECK-LABEL: test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i16: 11629; CHECK: # %bb.0: # %entry 11630; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11631; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 11632; CHECK-NEXT: vmv1r.v v8, v10 11633; CHECK-NEXT: ret 11634entry: 11635 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 11636 %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) 11637 ret <vscale x 1 x half> %1 11638} 11639 11640define <vscale x 1 x half> @test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11641; CHECK-LABEL: test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i16: 11642; CHECK: # %bb.0: # %entry 11643; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11644; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 11645; CHECK-NEXT: vmv1r.v v8, v10 11646; CHECK-NEXT: ret 11647entry: 11648 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11649 %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) 11650 ret <vscale x 1 x half> %1 11651} 11652 11653 11654define <vscale x 1 x half> @test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 11655; CHECK-LABEL: test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i32: 11656; CHECK: # %bb.0: # %entry 11657; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11658; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 11659; CHECK-NEXT: vmv1r.v v8, v10 11660; CHECK-NEXT: ret 11661entry: 11662 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 11663 %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) 11664 ret <vscale x 1 x half> %1 11665} 11666 11667define <vscale x 1 x half> @test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11668; CHECK-LABEL: test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i32: 11669; CHECK: # %bb.0: # %entry 11670; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11671; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 11672; CHECK-NEXT: vmv1r.v v8, v10 11673; CHECK-NEXT: ret 11674entry: 11675 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11676 %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) 11677 ret <vscale x 1 x half> %1 11678} 11679 11680 11681define <vscale x 1 x half> @test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 11682; CHECK-LABEL: test_vluxseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i64: 11683; CHECK: # %bb.0: # %entry 11684; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11685; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 11686; CHECK-NEXT: vmv1r.v v8, v10 11687; CHECK-NEXT: ret 11688entry: 11689 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 11690 %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) 11691 ret <vscale x 1 x half> %1 11692} 11693 11694define <vscale x 1 x half> @test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11695; CHECK-LABEL: test_vluxseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t_nxv1i64: 11696; CHECK: # %bb.0: # %entry 11697; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11698; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 11699; CHECK-NEXT: vmv1r.v v8, v10 11700; CHECK-NEXT: ret 11701entry: 11702 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11703 %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) 11704 ret <vscale x 1 x half> %1 11705} 11706 11707 11708define <vscale x 2 x half> @test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 11709; CHECK-LABEL: test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i8: 11710; CHECK: # %bb.0: # %entry 11711; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11712; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 11713; CHECK-NEXT: vmv1r.v v8, v10 11714; CHECK-NEXT: ret 11715entry: 11716 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 11717 %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) 11718 ret <vscale x 2 x half> %1 11719} 11720 11721define <vscale x 2 x half> @test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11722; CHECK-LABEL: test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i8: 11723; CHECK: # %bb.0: # %entry 11724; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11725; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 11726; CHECK-NEXT: vmv1r.v v8, v10 11727; CHECK-NEXT: ret 11728entry: 11729 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11730 %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) 11731 ret <vscale x 2 x half> %1 11732} 11733 11734 11735define <vscale x 2 x half> @test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 11736; CHECK-LABEL: test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i16: 11737; CHECK: # %bb.0: # %entry 11738; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11739; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 11740; CHECK-NEXT: vmv1r.v v8, v10 11741; CHECK-NEXT: ret 11742entry: 11743 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 11744 %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) 11745 ret <vscale x 2 x half> %1 11746} 11747 11748define <vscale x 2 x half> @test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11749; CHECK-LABEL: test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i16: 11750; CHECK: # %bb.0: # %entry 11751; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11752; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 11753; CHECK-NEXT: vmv1r.v v8, v10 11754; CHECK-NEXT: ret 11755entry: 11756 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11757 %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) 11758 ret <vscale x 2 x half> %1 11759} 11760 11761 11762define <vscale x 2 x half> @test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 11763; CHECK-LABEL: test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i32: 11764; CHECK: # %bb.0: # %entry 11765; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11766; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 11767; CHECK-NEXT: vmv1r.v v8, v10 11768; CHECK-NEXT: ret 11769entry: 11770 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 11771 %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) 11772 ret <vscale x 2 x half> %1 11773} 11774 11775define <vscale x 2 x half> @test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11776; CHECK-LABEL: test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i32: 11777; CHECK: # %bb.0: # %entry 11778; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11779; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 11780; CHECK-NEXT: vmv1r.v v8, v10 11781; CHECK-NEXT: ret 11782entry: 11783 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11784 %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) 11785 ret <vscale x 2 x half> %1 11786} 11787 11788 11789define <vscale x 2 x half> @test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 11790; CHECK-LABEL: test_vluxseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i64: 11791; CHECK: # %bb.0: # %entry 11792; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11793; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8 11794; CHECK-NEXT: vmv1r.v v8, v11 11795; CHECK-NEXT: ret 11796entry: 11797 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 11798 %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) 11799 ret <vscale x 2 x half> %1 11800} 11801 11802define <vscale x 2 x half> @test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 11803; CHECK-LABEL: test_vluxseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t_nxv2i64: 11804; CHECK: # %bb.0: # %entry 11805; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 11806; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8, v0.t 11807; CHECK-NEXT: vmv1r.v v8, v11 11808; CHECK-NEXT: ret 11809entry: 11810 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 11811 %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) 11812 ret <vscale x 2 x half> %1 11813} 11814 11815 11816define <vscale x 4 x half> @test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 11817; CHECK-LABEL: test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i8: 11818; CHECK: # %bb.0: # %entry 11819; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11820; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 11821; CHECK-NEXT: vmv1r.v v8, v10 11822; CHECK-NEXT: ret 11823entry: 11824 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 11825 %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) 11826 ret <vscale x 4 x half> %1 11827} 11828 11829define <vscale x 4 x half> @test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11830; CHECK-LABEL: test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i8: 11831; CHECK: # %bb.0: # %entry 11832; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11833; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 11834; CHECK-NEXT: vmv1r.v v8, v10 11835; CHECK-NEXT: ret 11836entry: 11837 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11838 %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) 11839 ret <vscale x 4 x half> %1 11840} 11841 11842 11843define <vscale x 4 x half> @test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 11844; CHECK-LABEL: test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i16: 11845; CHECK: # %bb.0: # %entry 11846; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11847; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 11848; CHECK-NEXT: vmv1r.v v8, v10 11849; CHECK-NEXT: ret 11850entry: 11851 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 11852 %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) 11853 ret <vscale x 4 x half> %1 11854} 11855 11856define <vscale x 4 x half> @test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11857; CHECK-LABEL: test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i16: 11858; CHECK: # %bb.0: # %entry 11859; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11860; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 11861; CHECK-NEXT: vmv1r.v v8, v10 11862; CHECK-NEXT: ret 11863entry: 11864 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11865 %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) 11866 ret <vscale x 4 x half> %1 11867} 11868 11869 11870define <vscale x 4 x half> @test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 11871; CHECK-LABEL: test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i32: 11872; CHECK: # %bb.0: # %entry 11873; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11874; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8 11875; CHECK-NEXT: vmv1r.v v8, v11 11876; CHECK-NEXT: ret 11877entry: 11878 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 11879 %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) 11880 ret <vscale x 4 x half> %1 11881} 11882 11883define <vscale x 4 x half> @test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11884; CHECK-LABEL: test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i32: 11885; CHECK: # %bb.0: # %entry 11886; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11887; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8, v0.t 11888; CHECK-NEXT: vmv1r.v v8, v11 11889; CHECK-NEXT: ret 11890entry: 11891 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11892 %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) 11893 ret <vscale x 4 x half> %1 11894} 11895 11896 11897define <vscale x 4 x half> @test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 11898; CHECK-LABEL: test_vluxseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i64: 11899; CHECK: # %bb.0: # %entry 11900; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11901; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8 11902; CHECK-NEXT: vmv1r.v v8, v13 11903; CHECK-NEXT: ret 11904entry: 11905 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 11906 %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) 11907 ret <vscale x 4 x half> %1 11908} 11909 11910define <vscale x 4 x half> @test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 11911; CHECK-LABEL: test_vluxseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t_nxv4i64: 11912; CHECK: # %bb.0: # %entry 11913; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11914; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8, v0.t 11915; CHECK-NEXT: vmv1r.v v8, v13 11916; CHECK-NEXT: ret 11917entry: 11918 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 11919 %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) 11920 ret <vscale x 4 x half> %1 11921} 11922 11923 11924define <vscale x 1 x half> @test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 11925; CHECK-LABEL: test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i8: 11926; CHECK: # %bb.0: # %entry 11927; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11928; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 11929; CHECK-NEXT: vmv1r.v v8, v10 11930; CHECK-NEXT: ret 11931entry: 11932 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 11933 %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) 11934 ret <vscale x 1 x half> %1 11935} 11936 11937define <vscale x 1 x half> @test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11938; CHECK-LABEL: test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i8: 11939; CHECK: # %bb.0: # %entry 11940; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11941; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 11942; CHECK-NEXT: vmv1r.v v8, v10 11943; CHECK-NEXT: ret 11944entry: 11945 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11946 %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) 11947 ret <vscale x 1 x half> %1 11948} 11949 11950 11951define <vscale x 1 x half> @test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 11952; CHECK-LABEL: test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i16: 11953; CHECK: # %bb.0: # %entry 11954; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11955; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 11956; CHECK-NEXT: vmv1r.v v8, v10 11957; CHECK-NEXT: ret 11958entry: 11959 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 11960 %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) 11961 ret <vscale x 1 x half> %1 11962} 11963 11964define <vscale x 1 x half> @test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11965; CHECK-LABEL: test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i16: 11966; CHECK: # %bb.0: # %entry 11967; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11968; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 11969; CHECK-NEXT: vmv1r.v v8, v10 11970; CHECK-NEXT: ret 11971entry: 11972 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 11973 %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) 11974 ret <vscale x 1 x half> %1 11975} 11976 11977 11978define <vscale x 1 x half> @test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 11979; CHECK-LABEL: test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i32: 11980; CHECK: # %bb.0: # %entry 11981; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11982; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 11983; CHECK-NEXT: vmv1r.v v8, v10 11984; CHECK-NEXT: ret 11985entry: 11986 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 11987 %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) 11988 ret <vscale x 1 x half> %1 11989} 11990 11991define <vscale x 1 x half> @test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 11992; CHECK-LABEL: test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i32: 11993; CHECK: # %bb.0: # %entry 11994; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 11995; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 11996; CHECK-NEXT: vmv1r.v v8, v10 11997; CHECK-NEXT: ret 11998entry: 11999 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 12000 %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) 12001 ret <vscale x 1 x half> %1 12002} 12003 12004 12005define <vscale x 1 x half> @test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 12006; CHECK-LABEL: test_vluxseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i64: 12007; CHECK: # %bb.0: # %entry 12008; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12009; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 12010; CHECK-NEXT: vmv1r.v v8, v10 12011; CHECK-NEXT: ret 12012entry: 12013 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 12014 %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) 12015 ret <vscale x 1 x half> %1 12016} 12017 12018define <vscale x 1 x half> @test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12019; CHECK-LABEL: test_vluxseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t_nxv1i64: 12020; CHECK: # %bb.0: # %entry 12021; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12022; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 12023; CHECK-NEXT: vmv1r.v v8, v10 12024; CHECK-NEXT: ret 12025entry: 12026 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 12027 %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) 12028 ret <vscale x 1 x half> %1 12029} 12030 12031 12032define <vscale x 2 x half> @test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 12033; CHECK-LABEL: test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i8: 12034; CHECK: # %bb.0: # %entry 12035; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12036; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 12037; CHECK-NEXT: vmv1r.v v8, v10 12038; CHECK-NEXT: ret 12039entry: 12040 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 12041 %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) 12042 ret <vscale x 2 x half> %1 12043} 12044 12045define <vscale x 2 x half> @test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12046; CHECK-LABEL: test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i8: 12047; CHECK: # %bb.0: # %entry 12048; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12049; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 12050; CHECK-NEXT: vmv1r.v v8, v10 12051; CHECK-NEXT: ret 12052entry: 12053 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12054 %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) 12055 ret <vscale x 2 x half> %1 12056} 12057 12058 12059define <vscale x 2 x half> @test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 12060; CHECK-LABEL: test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i16: 12061; CHECK: # %bb.0: # %entry 12062; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12063; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 12064; CHECK-NEXT: vmv1r.v v8, v10 12065; CHECK-NEXT: ret 12066entry: 12067 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 12068 %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) 12069 ret <vscale x 2 x half> %1 12070} 12071 12072define <vscale x 2 x half> @test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12073; CHECK-LABEL: test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i16: 12074; CHECK: # %bb.0: # %entry 12075; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12076; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 12077; CHECK-NEXT: vmv1r.v v8, v10 12078; CHECK-NEXT: ret 12079entry: 12080 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12081 %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) 12082 ret <vscale x 2 x half> %1 12083} 12084 12085 12086define <vscale x 2 x half> @test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 12087; CHECK-LABEL: test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i32: 12088; CHECK: # %bb.0: # %entry 12089; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12090; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 12091; CHECK-NEXT: vmv1r.v v8, v10 12092; CHECK-NEXT: ret 12093entry: 12094 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 12095 %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) 12096 ret <vscale x 2 x half> %1 12097} 12098 12099define <vscale x 2 x half> @test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12100; CHECK-LABEL: test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i32: 12101; CHECK: # %bb.0: # %entry 12102; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12103; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 12104; CHECK-NEXT: vmv1r.v v8, v10 12105; CHECK-NEXT: ret 12106entry: 12107 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12108 %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) 12109 ret <vscale x 2 x half> %1 12110} 12111 12112 12113define <vscale x 2 x half> @test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 12114; CHECK-LABEL: test_vluxseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i64: 12115; CHECK: # %bb.0: # %entry 12116; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12117; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8 12118; CHECK-NEXT: vmv1r.v v8, v11 12119; CHECK-NEXT: ret 12120entry: 12121 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 12122 %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) 12123 ret <vscale x 2 x half> %1 12124} 12125 12126define <vscale x 2 x half> @test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12127; CHECK-LABEL: test_vluxseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t_nxv2i64: 12128; CHECK: # %bb.0: # %entry 12129; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12130; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8, v0.t 12131; CHECK-NEXT: vmv1r.v v8, v11 12132; CHECK-NEXT: ret 12133entry: 12134 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12135 %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) 12136 ret <vscale x 2 x half> %1 12137} 12138 12139 12140define <vscale x 4 x half> @test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 12141; CHECK-LABEL: test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i8: 12142; CHECK: # %bb.0: # %entry 12143; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12144; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 12145; CHECK-NEXT: vmv1r.v v8, v10 12146; CHECK-NEXT: ret 12147entry: 12148 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 12149 %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) 12150 ret <vscale x 4 x half> %1 12151} 12152 12153define <vscale x 4 x half> @test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12154; CHECK-LABEL: test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i8: 12155; CHECK: # %bb.0: # %entry 12156; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12157; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 12158; CHECK-NEXT: vmv1r.v v8, v10 12159; CHECK-NEXT: ret 12160entry: 12161 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12162 %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) 12163 ret <vscale x 4 x half> %1 12164} 12165 12166 12167define <vscale x 4 x half> @test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 12168; CHECK-LABEL: test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i16: 12169; CHECK: # %bb.0: # %entry 12170; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12171; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 12172; CHECK-NEXT: vmv1r.v v8, v10 12173; CHECK-NEXT: ret 12174entry: 12175 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 12176 %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) 12177 ret <vscale x 4 x half> %1 12178} 12179 12180define <vscale x 4 x half> @test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12181; CHECK-LABEL: test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i16: 12182; CHECK: # %bb.0: # %entry 12183; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12184; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 12185; CHECK-NEXT: vmv1r.v v8, v10 12186; CHECK-NEXT: ret 12187entry: 12188 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12189 %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) 12190 ret <vscale x 4 x half> %1 12191} 12192 12193 12194define <vscale x 4 x half> @test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 12195; CHECK-LABEL: test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i32: 12196; CHECK: # %bb.0: # %entry 12197; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12198; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8 12199; CHECK-NEXT: vmv1r.v v8, v11 12200; CHECK-NEXT: ret 12201entry: 12202 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 12203 %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) 12204 ret <vscale x 4 x half> %1 12205} 12206 12207define <vscale x 4 x half> @test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12208; CHECK-LABEL: test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i32: 12209; CHECK: # %bb.0: # %entry 12210; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12211; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8, v0.t 12212; CHECK-NEXT: vmv1r.v v8, v11 12213; CHECK-NEXT: ret 12214entry: 12215 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12216 %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) 12217 ret <vscale x 4 x half> %1 12218} 12219 12220 12221define <vscale x 4 x half> @test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 12222; CHECK-LABEL: test_vluxseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i64: 12223; CHECK: # %bb.0: # %entry 12224; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12225; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8 12226; CHECK-NEXT: vmv1r.v v8, v13 12227; CHECK-NEXT: ret 12228entry: 12229 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 12230 %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) 12231 ret <vscale x 4 x half> %1 12232} 12233 12234define <vscale x 4 x half> @test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12235; CHECK-LABEL: test_vluxseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t_nxv4i64: 12236; CHECK: # %bb.0: # %entry 12237; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12238; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8, v0.t 12239; CHECK-NEXT: vmv1r.v v8, v13 12240; CHECK-NEXT: ret 12241entry: 12242 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12243 %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) 12244 ret <vscale x 4 x half> %1 12245} 12246 12247 12248define <vscale x 1 x half> @test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 12249; CHECK-LABEL: test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i8: 12250; CHECK: # %bb.0: # %entry 12251; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12252; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 12253; CHECK-NEXT: vmv1r.v v8, v10 12254; CHECK-NEXT: ret 12255entry: 12256 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 12257 %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) 12258 ret <vscale x 1 x half> %1 12259} 12260 12261define <vscale x 1 x half> @test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12262; CHECK-LABEL: test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i8: 12263; CHECK: # %bb.0: # %entry 12264; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12265; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 12266; CHECK-NEXT: vmv1r.v v8, v10 12267; CHECK-NEXT: ret 12268entry: 12269 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 12270 %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) 12271 ret <vscale x 1 x half> %1 12272} 12273 12274 12275define <vscale x 1 x half> @test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 12276; CHECK-LABEL: test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i16: 12277; CHECK: # %bb.0: # %entry 12278; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12279; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 12280; CHECK-NEXT: vmv1r.v v8, v10 12281; CHECK-NEXT: ret 12282entry: 12283 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 12284 %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) 12285 ret <vscale x 1 x half> %1 12286} 12287 12288define <vscale x 1 x half> @test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12289; CHECK-LABEL: test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i16: 12290; CHECK: # %bb.0: # %entry 12291; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12292; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 12293; CHECK-NEXT: vmv1r.v v8, v10 12294; CHECK-NEXT: ret 12295entry: 12296 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 12297 %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) 12298 ret <vscale x 1 x half> %1 12299} 12300 12301 12302define <vscale x 1 x half> @test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 12303; CHECK-LABEL: test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i32: 12304; CHECK: # %bb.0: # %entry 12305; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12306; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 12307; CHECK-NEXT: vmv1r.v v8, v10 12308; CHECK-NEXT: ret 12309entry: 12310 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 12311 %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) 12312 ret <vscale x 1 x half> %1 12313} 12314 12315define <vscale x 1 x half> @test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12316; CHECK-LABEL: test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i32: 12317; CHECK: # %bb.0: # %entry 12318; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12319; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 12320; CHECK-NEXT: vmv1r.v v8, v10 12321; CHECK-NEXT: ret 12322entry: 12323 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 12324 %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) 12325 ret <vscale x 1 x half> %1 12326} 12327 12328 12329define <vscale x 1 x half> @test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 12330; CHECK-LABEL: test_vluxseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i64: 12331; CHECK: # %bb.0: # %entry 12332; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12333; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 12334; CHECK-NEXT: vmv1r.v v8, v10 12335; CHECK-NEXT: ret 12336entry: 12337 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 12338 %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) 12339 ret <vscale x 1 x half> %1 12340} 12341 12342define <vscale x 1 x half> @test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12343; CHECK-LABEL: test_vluxseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t_nxv1i64: 12344; CHECK: # %bb.0: # %entry 12345; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 12346; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 12347; CHECK-NEXT: vmv1r.v v8, v10 12348; CHECK-NEXT: ret 12349entry: 12350 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 12351 %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) 12352 ret <vscale x 1 x half> %1 12353} 12354 12355 12356define <vscale x 2 x half> @test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 12357; CHECK-LABEL: test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i8: 12358; CHECK: # %bb.0: # %entry 12359; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12360; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 12361; CHECK-NEXT: vmv1r.v v8, v10 12362; CHECK-NEXT: ret 12363entry: 12364 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 12365 %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) 12366 ret <vscale x 2 x half> %1 12367} 12368 12369define <vscale x 2 x half> @test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12370; CHECK-LABEL: test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i8: 12371; CHECK: # %bb.0: # %entry 12372; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12373; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 12374; CHECK-NEXT: vmv1r.v v8, v10 12375; CHECK-NEXT: ret 12376entry: 12377 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12378 %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) 12379 ret <vscale x 2 x half> %1 12380} 12381 12382 12383define <vscale x 2 x half> @test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 12384; CHECK-LABEL: test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i16: 12385; CHECK: # %bb.0: # %entry 12386; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12387; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 12388; CHECK-NEXT: vmv1r.v v8, v10 12389; CHECK-NEXT: ret 12390entry: 12391 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 12392 %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) 12393 ret <vscale x 2 x half> %1 12394} 12395 12396define <vscale x 2 x half> @test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12397; CHECK-LABEL: test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i16: 12398; CHECK: # %bb.0: # %entry 12399; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12400; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 12401; CHECK-NEXT: vmv1r.v v8, v10 12402; CHECK-NEXT: ret 12403entry: 12404 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12405 %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) 12406 ret <vscale x 2 x half> %1 12407} 12408 12409 12410define <vscale x 2 x half> @test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 12411; CHECK-LABEL: test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i32: 12412; CHECK: # %bb.0: # %entry 12413; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12414; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 12415; CHECK-NEXT: vmv1r.v v8, v10 12416; CHECK-NEXT: ret 12417entry: 12418 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 12419 %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) 12420 ret <vscale x 2 x half> %1 12421} 12422 12423define <vscale x 2 x half> @test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12424; CHECK-LABEL: test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i32: 12425; CHECK: # %bb.0: # %entry 12426; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12427; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 12428; CHECK-NEXT: vmv1r.v v8, v10 12429; CHECK-NEXT: ret 12430entry: 12431 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12432 %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) 12433 ret <vscale x 2 x half> %1 12434} 12435 12436 12437define <vscale x 2 x half> @test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 12438; CHECK-LABEL: test_vluxseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i64: 12439; CHECK: # %bb.0: # %entry 12440; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12441; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8 12442; CHECK-NEXT: vmv1r.v v8, v11 12443; CHECK-NEXT: ret 12444entry: 12445 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 12446 %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) 12447 ret <vscale x 2 x half> %1 12448} 12449 12450define <vscale x 2 x half> @test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12451; CHECK-LABEL: test_vluxseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t_nxv2i64: 12452; CHECK: # %bb.0: # %entry 12453; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 12454; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8, v0.t 12455; CHECK-NEXT: vmv1r.v v8, v11 12456; CHECK-NEXT: ret 12457entry: 12458 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 12459 %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) 12460 ret <vscale x 2 x half> %1 12461} 12462 12463 12464define <vscale x 4 x half> @test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 12465; CHECK-LABEL: test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i8: 12466; CHECK: # %bb.0: # %entry 12467; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12468; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 12469; CHECK-NEXT: vmv1r.v v8, v10 12470; CHECK-NEXT: ret 12471entry: 12472 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 12473 %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) 12474 ret <vscale x 4 x half> %1 12475} 12476 12477define <vscale x 4 x half> @test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12478; CHECK-LABEL: test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i8: 12479; CHECK: # %bb.0: # %entry 12480; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12481; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 12482; CHECK-NEXT: vmv1r.v v8, v10 12483; CHECK-NEXT: ret 12484entry: 12485 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12486 %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) 12487 ret <vscale x 4 x half> %1 12488} 12489 12490 12491define <vscale x 4 x half> @test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 12492; CHECK-LABEL: test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i16: 12493; CHECK: # %bb.0: # %entry 12494; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12495; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 12496; CHECK-NEXT: vmv1r.v v8, v10 12497; CHECK-NEXT: ret 12498entry: 12499 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 12500 %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) 12501 ret <vscale x 4 x half> %1 12502} 12503 12504define <vscale x 4 x half> @test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12505; CHECK-LABEL: test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i16: 12506; CHECK: # %bb.0: # %entry 12507; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12508; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 12509; CHECK-NEXT: vmv1r.v v8, v10 12510; CHECK-NEXT: ret 12511entry: 12512 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12513 %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) 12514 ret <vscale x 4 x half> %1 12515} 12516 12517 12518define <vscale x 4 x half> @test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 12519; CHECK-LABEL: test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i32: 12520; CHECK: # %bb.0: # %entry 12521; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12522; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8 12523; CHECK-NEXT: vmv1r.v v8, v11 12524; CHECK-NEXT: ret 12525entry: 12526 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 12527 %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) 12528 ret <vscale x 4 x half> %1 12529} 12530 12531define <vscale x 4 x half> @test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12532; CHECK-LABEL: test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i32: 12533; CHECK: # %bb.0: # %entry 12534; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12535; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8, v0.t 12536; CHECK-NEXT: vmv1r.v v8, v11 12537; CHECK-NEXT: ret 12538entry: 12539 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12540 %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) 12541 ret <vscale x 4 x half> %1 12542} 12543 12544 12545define <vscale x 4 x half> @test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 12546; CHECK-LABEL: test_vluxseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i64: 12547; CHECK: # %bb.0: # %entry 12548; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12549; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8 12550; CHECK-NEXT: vmv1r.v v8, v13 12551; CHECK-NEXT: ret 12552entry: 12553 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 12554 %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) 12555 ret <vscale x 4 x half> %1 12556} 12557 12558define <vscale x 4 x half> @test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12559; CHECK-LABEL: test_vluxseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t_nxv4i64: 12560; CHECK: # %bb.0: # %entry 12561; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 12562; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8, v0.t 12563; CHECK-NEXT: vmv1r.v v8, v13 12564; CHECK-NEXT: ret 12565entry: 12566 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 12567 %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) 12568 ret <vscale x 4 x half> %1 12569} 12570 12571 12572define <vscale x 1 x float> @test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 12573; CHECK-LABEL: test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i8: 12574; CHECK: # %bb.0: # %entry 12575; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12576; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 12577; CHECK-NEXT: vmv1r.v v8, v10 12578; CHECK-NEXT: ret 12579entry: 12580 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 12581 %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) 12582 ret <vscale x 1 x float> %1 12583} 12584 12585define <vscale x 1 x float> @test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12586; CHECK-LABEL: test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i8: 12587; CHECK: # %bb.0: # %entry 12588; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12589; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 12590; CHECK-NEXT: vmv1r.v v8, v10 12591; CHECK-NEXT: ret 12592entry: 12593 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 12594 %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) 12595 ret <vscale x 1 x float> %1 12596} 12597 12598 12599define <vscale x 1 x float> @test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 12600; CHECK-LABEL: test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i16: 12601; CHECK: # %bb.0: # %entry 12602; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12603; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 12604; CHECK-NEXT: vmv1r.v v8, v10 12605; CHECK-NEXT: ret 12606entry: 12607 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 12608 %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) 12609 ret <vscale x 1 x float> %1 12610} 12611 12612define <vscale x 1 x float> @test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12613; CHECK-LABEL: test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i16: 12614; CHECK: # %bb.0: # %entry 12615; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12616; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 12617; CHECK-NEXT: vmv1r.v v8, v10 12618; CHECK-NEXT: ret 12619entry: 12620 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 12621 %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) 12622 ret <vscale x 1 x float> %1 12623} 12624 12625 12626define <vscale x 1 x float> @test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 12627; CHECK-LABEL: test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i32: 12628; CHECK: # %bb.0: # %entry 12629; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12630; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 12631; CHECK-NEXT: vmv1r.v v8, v10 12632; CHECK-NEXT: ret 12633entry: 12634 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 12635 %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) 12636 ret <vscale x 1 x float> %1 12637} 12638 12639define <vscale x 1 x float> @test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12640; CHECK-LABEL: test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i32: 12641; CHECK: # %bb.0: # %entry 12642; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12643; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 12644; CHECK-NEXT: vmv1r.v v8, v10 12645; CHECK-NEXT: ret 12646entry: 12647 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 12648 %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) 12649 ret <vscale x 1 x float> %1 12650} 12651 12652 12653define <vscale x 1 x float> @test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 12654; CHECK-LABEL: test_vluxseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i64: 12655; CHECK: # %bb.0: # %entry 12656; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12657; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 12658; CHECK-NEXT: vmv1r.v v8, v10 12659; CHECK-NEXT: ret 12660entry: 12661 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 12662 %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) 12663 ret <vscale x 1 x float> %1 12664} 12665 12666define <vscale x 1 x float> @test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 12667; CHECK-LABEL: test_vluxseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t_nxv1i64: 12668; CHECK: # %bb.0: # %entry 12669; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 12670; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 12671; CHECK-NEXT: vmv1r.v v8, v10 12672; CHECK-NEXT: ret 12673entry: 12674 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 12675 %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) 12676 ret <vscale x 1 x float> %1 12677} 12678 12679 12680define <vscale x 2 x float> @test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 12681; CHECK-LABEL: test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i8: 12682; CHECK: # %bb.0: # %entry 12683; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12684; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 12685; CHECK-NEXT: vmv1r.v v8, v10 12686; CHECK-NEXT: ret 12687entry: 12688 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 12689 %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) 12690 ret <vscale x 2 x float> %1 12691} 12692 12693define <vscale x 2 x float> @test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12694; CHECK-LABEL: test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i8: 12695; CHECK: # %bb.0: # %entry 12696; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12697; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 12698; CHECK-NEXT: vmv1r.v v8, v10 12699; CHECK-NEXT: ret 12700entry: 12701 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 12702 %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) 12703 ret <vscale x 2 x float> %1 12704} 12705 12706 12707define <vscale x 2 x float> @test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 12708; CHECK-LABEL: test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i16: 12709; CHECK: # %bb.0: # %entry 12710; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12711; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 12712; CHECK-NEXT: vmv1r.v v8, v10 12713; CHECK-NEXT: ret 12714entry: 12715 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 12716 %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) 12717 ret <vscale x 2 x float> %1 12718} 12719 12720define <vscale x 2 x float> @test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12721; CHECK-LABEL: test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i16: 12722; CHECK: # %bb.0: # %entry 12723; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12724; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 12725; CHECK-NEXT: vmv1r.v v8, v10 12726; CHECK-NEXT: ret 12727entry: 12728 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 12729 %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) 12730 ret <vscale x 2 x float> %1 12731} 12732 12733 12734define <vscale x 2 x float> @test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 12735; CHECK-LABEL: test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i32: 12736; CHECK: # %bb.0: # %entry 12737; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12738; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 12739; CHECK-NEXT: vmv1r.v v8, v10 12740; CHECK-NEXT: ret 12741entry: 12742 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 12743 %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) 12744 ret <vscale x 2 x float> %1 12745} 12746 12747define <vscale x 2 x float> @test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12748; CHECK-LABEL: test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i32: 12749; CHECK: # %bb.0: # %entry 12750; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12751; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 12752; CHECK-NEXT: vmv1r.v v8, v10 12753; CHECK-NEXT: ret 12754entry: 12755 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 12756 %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) 12757 ret <vscale x 2 x float> %1 12758} 12759 12760 12761define <vscale x 2 x float> @test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 12762; CHECK-LABEL: test_vluxseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i64: 12763; CHECK: # %bb.0: # %entry 12764; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12765; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 12766; CHECK-NEXT: vmv1r.v v8, v11 12767; CHECK-NEXT: ret 12768entry: 12769 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 12770 %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) 12771 ret <vscale x 2 x float> %1 12772} 12773 12774define <vscale x 2 x float> @test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 12775; CHECK-LABEL: test_vluxseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t_nxv2i64: 12776; CHECK: # %bb.0: # %entry 12777; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 12778; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 12779; CHECK-NEXT: vmv1r.v v8, v11 12780; CHECK-NEXT: ret 12781entry: 12782 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 12783 %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) 12784 ret <vscale x 2 x float> %1 12785} 12786 12787 12788define <vscale x 4 x float> @test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 12789; CHECK-LABEL: test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i8: 12790; CHECK: # %bb.0: # %entry 12791; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12792; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 12793; CHECK-NEXT: vmv2r.v v8, v12 12794; CHECK-NEXT: ret 12795entry: 12796 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 5) 12797 %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) 12798 ret <vscale x 4 x float> %1 12799} 12800 12801define <vscale x 4 x float> @test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12802; CHECK-LABEL: test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i8: 12803; CHECK: # %bb.0: # %entry 12804; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12805; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 12806; CHECK-NEXT: vmv2r.v v8, v12 12807; CHECK-NEXT: ret 12808entry: 12809 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 12810 %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) 12811 ret <vscale x 4 x float> %1 12812} 12813 12814 12815define <vscale x 4 x float> @test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 12816; CHECK-LABEL: test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i16: 12817; CHECK: # %bb.0: # %entry 12818; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12819; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 12820; CHECK-NEXT: vmv2r.v v8, v12 12821; CHECK-NEXT: ret 12822entry: 12823 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 5) 12824 %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) 12825 ret <vscale x 4 x float> %1 12826} 12827 12828define <vscale x 4 x float> @test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12829; CHECK-LABEL: test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i16: 12830; CHECK: # %bb.0: # %entry 12831; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12832; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 12833; CHECK-NEXT: vmv2r.v v8, v12 12834; CHECK-NEXT: ret 12835entry: 12836 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 12837 %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) 12838 ret <vscale x 4 x float> %1 12839} 12840 12841 12842define <vscale x 4 x float> @test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 12843; CHECK-LABEL: test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i32: 12844; CHECK: # %bb.0: # %entry 12845; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12846; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 12847; CHECK-NEXT: vmv2r.v v8, v12 12848; CHECK-NEXT: ret 12849entry: 12850 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 5) 12851 %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) 12852 ret <vscale x 4 x float> %1 12853} 12854 12855define <vscale x 4 x float> @test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12856; CHECK-LABEL: test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i32: 12857; CHECK: # %bb.0: # %entry 12858; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12859; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 12860; CHECK-NEXT: vmv2r.v v8, v12 12861; CHECK-NEXT: ret 12862entry: 12863 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 12864 %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) 12865 ret <vscale x 4 x float> %1 12866} 12867 12868 12869define <vscale x 4 x float> @test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 12870; CHECK-LABEL: test_vluxseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i64: 12871; CHECK: # %bb.0: # %entry 12872; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12873; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 12874; CHECK-NEXT: vmv2r.v v8, v14 12875; CHECK-NEXT: ret 12876entry: 12877 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 5) 12878 %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) 12879 ret <vscale x 4 x float> %1 12880} 12881 12882define <vscale x 4 x float> @test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 12883; CHECK-LABEL: test_vluxseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t_nxv4i64: 12884; CHECK: # %bb.0: # %entry 12885; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 12886; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 12887; CHECK-NEXT: vmv2r.v v8, v14 12888; CHECK-NEXT: ret 12889entry: 12890 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 12891 %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) 12892 ret <vscale x 4 x float> %1 12893} 12894 12895 12896define <vscale x 8 x float> @test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 12897; CHECK-LABEL: test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i8: 12898; CHECK: # %bb.0: # %entry 12899; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12900; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 12901; CHECK-NEXT: vmv4r.v v8, v16 12902; CHECK-NEXT: ret 12903entry: 12904 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 5) 12905 %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) 12906 ret <vscale x 8 x float> %1 12907} 12908 12909define <vscale x 8 x float> @test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 12910; CHECK-LABEL: test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i8: 12911; CHECK: # %bb.0: # %entry 12912; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12913; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 12914; CHECK-NEXT: vmv4r.v v8, v16 12915; CHECK-NEXT: ret 12916entry: 12917 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 12918 %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) 12919 ret <vscale x 8 x float> %1 12920} 12921 12922 12923define <vscale x 8 x float> @test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 12924; CHECK-LABEL: test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i16: 12925; CHECK: # %bb.0: # %entry 12926; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12927; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 12928; CHECK-NEXT: vmv4r.v v8, v16 12929; CHECK-NEXT: ret 12930entry: 12931 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 5) 12932 %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) 12933 ret <vscale x 8 x float> %1 12934} 12935 12936define <vscale x 8 x float> @test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 12937; CHECK-LABEL: test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i16: 12938; CHECK: # %bb.0: # %entry 12939; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12940; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 12941; CHECK-NEXT: vmv4r.v v8, v16 12942; CHECK-NEXT: ret 12943entry: 12944 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 12945 %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) 12946 ret <vscale x 8 x float> %1 12947} 12948 12949 12950define <vscale x 8 x float> @test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 12951; CHECK-LABEL: test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i32: 12952; CHECK: # %bb.0: # %entry 12953; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12954; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 12955; CHECK-NEXT: vmv4r.v v8, v16 12956; CHECK-NEXT: ret 12957entry: 12958 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 5) 12959 %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) 12960 ret <vscale x 8 x float> %1 12961} 12962 12963define <vscale x 8 x float> @test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 12964; CHECK-LABEL: test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i32: 12965; CHECK: # %bb.0: # %entry 12966; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12967; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 12968; CHECK-NEXT: vmv4r.v v8, v16 12969; CHECK-NEXT: ret 12970entry: 12971 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 12972 %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) 12973 ret <vscale x 8 x float> %1 12974} 12975 12976 12977define <vscale x 8 x float> @test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 12978; CHECK-LABEL: test_vluxseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i64: 12979; CHECK: # %bb.0: # %entry 12980; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12981; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8 12982; CHECK-NEXT: vmv4r.v v8, v20 12983; CHECK-NEXT: ret 12984entry: 12985 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 5) 12986 %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) 12987 ret <vscale x 8 x float> %1 12988} 12989 12990define <vscale x 8 x float> @test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 12991; CHECK-LABEL: test_vluxseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t_nxv8i64: 12992; CHECK: # %bb.0: # %entry 12993; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 12994; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8, v0.t 12995; CHECK-NEXT: vmv4r.v v8, v20 12996; CHECK-NEXT: ret 12997entry: 12998 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5) 12999 %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) 13000 ret <vscale x 8 x float> %1 13001} 13002 13003 13004define <vscale x 1 x float> @test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 13005; CHECK-LABEL: test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i8: 13006; CHECK: # %bb.0: # %entry 13007; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13008; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 13009; CHECK-NEXT: vmv1r.v v8, v10 13010; CHECK-NEXT: ret 13011entry: 13012 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 13013 %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) 13014 ret <vscale x 1 x float> %1 13015} 13016 13017define <vscale x 1 x float> @test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13018; CHECK-LABEL: test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i8: 13019; CHECK: # %bb.0: # %entry 13020; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13021; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 13022; CHECK-NEXT: vmv1r.v v8, v10 13023; CHECK-NEXT: ret 13024entry: 13025 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13026 %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) 13027 ret <vscale x 1 x float> %1 13028} 13029 13030 13031define <vscale x 1 x float> @test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 13032; CHECK-LABEL: test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i16: 13033; CHECK: # %bb.0: # %entry 13034; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13035; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 13036; CHECK-NEXT: vmv1r.v v8, v10 13037; CHECK-NEXT: ret 13038entry: 13039 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 13040 %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) 13041 ret <vscale x 1 x float> %1 13042} 13043 13044define <vscale x 1 x float> @test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13045; CHECK-LABEL: test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i16: 13046; CHECK: # %bb.0: # %entry 13047; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13048; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 13049; CHECK-NEXT: vmv1r.v v8, v10 13050; CHECK-NEXT: ret 13051entry: 13052 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13053 %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) 13054 ret <vscale x 1 x float> %1 13055} 13056 13057 13058define <vscale x 1 x float> @test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 13059; CHECK-LABEL: test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i32: 13060; CHECK: # %bb.0: # %entry 13061; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13062; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 13063; CHECK-NEXT: vmv1r.v v8, v10 13064; CHECK-NEXT: ret 13065entry: 13066 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 13067 %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) 13068 ret <vscale x 1 x float> %1 13069} 13070 13071define <vscale x 1 x float> @test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13072; CHECK-LABEL: test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i32: 13073; CHECK: # %bb.0: # %entry 13074; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13075; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 13076; CHECK-NEXT: vmv1r.v v8, v10 13077; CHECK-NEXT: ret 13078entry: 13079 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13080 %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) 13081 ret <vscale x 1 x float> %1 13082} 13083 13084 13085define <vscale x 1 x float> @test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 13086; CHECK-LABEL: test_vluxseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i64: 13087; CHECK: # %bb.0: # %entry 13088; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13089; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 13090; CHECK-NEXT: vmv1r.v v8, v10 13091; CHECK-NEXT: ret 13092entry: 13093 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 13094 %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) 13095 ret <vscale x 1 x float> %1 13096} 13097 13098define <vscale x 1 x float> @test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13099; CHECK-LABEL: test_vluxseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t_nxv1i64: 13100; CHECK: # %bb.0: # %entry 13101; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13102; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 13103; CHECK-NEXT: vmv1r.v v8, v10 13104; CHECK-NEXT: ret 13105entry: 13106 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13107 %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) 13108 ret <vscale x 1 x float> %1 13109} 13110 13111 13112define <vscale x 2 x float> @test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 13113; CHECK-LABEL: test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i8: 13114; CHECK: # %bb.0: # %entry 13115; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13116; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 13117; CHECK-NEXT: vmv1r.v v8, v10 13118; CHECK-NEXT: ret 13119entry: 13120 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 13121 %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) 13122 ret <vscale x 2 x float> %1 13123} 13124 13125define <vscale x 2 x float> @test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13126; CHECK-LABEL: test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i8: 13127; CHECK: # %bb.0: # %entry 13128; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13129; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 13130; CHECK-NEXT: vmv1r.v v8, v10 13131; CHECK-NEXT: ret 13132entry: 13133 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13134 %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) 13135 ret <vscale x 2 x float> %1 13136} 13137 13138 13139define <vscale x 2 x float> @test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 13140; CHECK-LABEL: test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i16: 13141; CHECK: # %bb.0: # %entry 13142; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13143; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 13144; CHECK-NEXT: vmv1r.v v8, v10 13145; CHECK-NEXT: ret 13146entry: 13147 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 13148 %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) 13149 ret <vscale x 2 x float> %1 13150} 13151 13152define <vscale x 2 x float> @test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13153; CHECK-LABEL: test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i16: 13154; CHECK: # %bb.0: # %entry 13155; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13156; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 13157; CHECK-NEXT: vmv1r.v v8, v10 13158; CHECK-NEXT: ret 13159entry: 13160 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13161 %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) 13162 ret <vscale x 2 x float> %1 13163} 13164 13165 13166define <vscale x 2 x float> @test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 13167; CHECK-LABEL: test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i32: 13168; CHECK: # %bb.0: # %entry 13169; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13170; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 13171; CHECK-NEXT: vmv1r.v v8, v10 13172; CHECK-NEXT: ret 13173entry: 13174 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 13175 %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) 13176 ret <vscale x 2 x float> %1 13177} 13178 13179define <vscale x 2 x float> @test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13180; CHECK-LABEL: test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i32: 13181; CHECK: # %bb.0: # %entry 13182; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13183; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 13184; CHECK-NEXT: vmv1r.v v8, v10 13185; CHECK-NEXT: ret 13186entry: 13187 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13188 %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) 13189 ret <vscale x 2 x float> %1 13190} 13191 13192 13193define <vscale x 2 x float> @test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 13194; CHECK-LABEL: test_vluxseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i64: 13195; CHECK: # %bb.0: # %entry 13196; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13197; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 13198; CHECK-NEXT: vmv1r.v v8, v11 13199; CHECK-NEXT: ret 13200entry: 13201 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 13202 %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) 13203 ret <vscale x 2 x float> %1 13204} 13205 13206define <vscale x 2 x float> @test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13207; CHECK-LABEL: test_vluxseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t_nxv2i64: 13208; CHECK: # %bb.0: # %entry 13209; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13210; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 13211; CHECK-NEXT: vmv1r.v v8, v11 13212; CHECK-NEXT: ret 13213entry: 13214 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13215 %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) 13216 ret <vscale x 2 x float> %1 13217} 13218 13219 13220define <vscale x 4 x float> @test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 13221; CHECK-LABEL: test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i8: 13222; CHECK: # %bb.0: # %entry 13223; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13224; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 13225; CHECK-NEXT: vmv2r.v v8, v12 13226; CHECK-NEXT: ret 13227entry: 13228 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 5) 13229 %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) 13230 ret <vscale x 4 x float> %1 13231} 13232 13233define <vscale x 4 x float> @test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13234; CHECK-LABEL: test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i8: 13235; CHECK: # %bb.0: # %entry 13236; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13237; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 13238; CHECK-NEXT: vmv2r.v v8, v12 13239; CHECK-NEXT: ret 13240entry: 13241 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13242 %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) 13243 ret <vscale x 4 x float> %1 13244} 13245 13246 13247define <vscale x 4 x float> @test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 13248; CHECK-LABEL: test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i16: 13249; CHECK: # %bb.0: # %entry 13250; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13251; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 13252; CHECK-NEXT: vmv2r.v v8, v12 13253; CHECK-NEXT: ret 13254entry: 13255 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 5) 13256 %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) 13257 ret <vscale x 4 x float> %1 13258} 13259 13260define <vscale x 4 x float> @test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13261; CHECK-LABEL: test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i16: 13262; CHECK: # %bb.0: # %entry 13263; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13264; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 13265; CHECK-NEXT: vmv2r.v v8, v12 13266; CHECK-NEXT: ret 13267entry: 13268 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13269 %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) 13270 ret <vscale x 4 x float> %1 13271} 13272 13273 13274define <vscale x 4 x float> @test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 13275; CHECK-LABEL: test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i32: 13276; CHECK: # %bb.0: # %entry 13277; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13278; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 13279; CHECK-NEXT: vmv2r.v v8, v12 13280; CHECK-NEXT: ret 13281entry: 13282 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 5) 13283 %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) 13284 ret <vscale x 4 x float> %1 13285} 13286 13287define <vscale x 4 x float> @test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13288; CHECK-LABEL: test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i32: 13289; CHECK: # %bb.0: # %entry 13290; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13291; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 13292; CHECK-NEXT: vmv2r.v v8, v12 13293; CHECK-NEXT: ret 13294entry: 13295 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13296 %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) 13297 ret <vscale x 4 x float> %1 13298} 13299 13300 13301define <vscale x 4 x float> @test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 13302; CHECK-LABEL: test_vluxseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i64: 13303; CHECK: # %bb.0: # %entry 13304; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13305; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8 13306; CHECK-NEXT: vmv2r.v v8, v14 13307; CHECK-NEXT: ret 13308entry: 13309 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 5) 13310 %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) 13311 ret <vscale x 4 x float> %1 13312} 13313 13314define <vscale x 4 x float> @test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13315; CHECK-LABEL: test_vluxseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t_nxv4i64: 13316; CHECK: # %bb.0: # %entry 13317; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13318; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8, v0.t 13319; CHECK-NEXT: vmv2r.v v8, v14 13320; CHECK-NEXT: ret 13321entry: 13322 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13323 %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) 13324 ret <vscale x 4 x float> %1 13325} 13326 13327 13328define <vscale x 1 x float> @test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 13329; CHECK-LABEL: test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i8: 13330; CHECK: # %bb.0: # %entry 13331; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13332; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 13333; CHECK-NEXT: vmv1r.v v8, v10 13334; CHECK-NEXT: ret 13335entry: 13336 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 13337 %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) 13338 ret <vscale x 1 x float> %1 13339} 13340 13341define <vscale x 1 x float> @test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13342; CHECK-LABEL: test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i8: 13343; CHECK: # %bb.0: # %entry 13344; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13345; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 13346; CHECK-NEXT: vmv1r.v v8, v10 13347; CHECK-NEXT: ret 13348entry: 13349 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13350 %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) 13351 ret <vscale x 1 x float> %1 13352} 13353 13354 13355define <vscale x 1 x float> @test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 13356; CHECK-LABEL: test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i16: 13357; CHECK: # %bb.0: # %entry 13358; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13359; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 13360; CHECK-NEXT: vmv1r.v v8, v10 13361; CHECK-NEXT: ret 13362entry: 13363 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 13364 %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) 13365 ret <vscale x 1 x float> %1 13366} 13367 13368define <vscale x 1 x float> @test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13369; CHECK-LABEL: test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i16: 13370; CHECK: # %bb.0: # %entry 13371; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13372; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 13373; CHECK-NEXT: vmv1r.v v8, v10 13374; CHECK-NEXT: ret 13375entry: 13376 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13377 %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) 13378 ret <vscale x 1 x float> %1 13379} 13380 13381 13382define <vscale x 1 x float> @test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 13383; CHECK-LABEL: test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i32: 13384; CHECK: # %bb.0: # %entry 13385; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13386; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 13387; CHECK-NEXT: vmv1r.v v8, v10 13388; CHECK-NEXT: ret 13389entry: 13390 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 13391 %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) 13392 ret <vscale x 1 x float> %1 13393} 13394 13395define <vscale x 1 x float> @test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13396; CHECK-LABEL: test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i32: 13397; CHECK: # %bb.0: # %entry 13398; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13399; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 13400; CHECK-NEXT: vmv1r.v v8, v10 13401; CHECK-NEXT: ret 13402entry: 13403 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13404 %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) 13405 ret <vscale x 1 x float> %1 13406} 13407 13408 13409define <vscale x 1 x float> @test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 13410; CHECK-LABEL: test_vluxseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i64: 13411; CHECK: # %bb.0: # %entry 13412; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13413; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 13414; CHECK-NEXT: vmv1r.v v8, v10 13415; CHECK-NEXT: ret 13416entry: 13417 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 13418 %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) 13419 ret <vscale x 1 x float> %1 13420} 13421 13422define <vscale x 1 x float> @test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13423; CHECK-LABEL: test_vluxseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t_nxv1i64: 13424; CHECK: # %bb.0: # %entry 13425; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13426; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 13427; CHECK-NEXT: vmv1r.v v8, v10 13428; CHECK-NEXT: ret 13429entry: 13430 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13431 %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) 13432 ret <vscale x 1 x float> %1 13433} 13434 13435 13436define <vscale x 2 x float> @test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 13437; CHECK-LABEL: test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i8: 13438; CHECK: # %bb.0: # %entry 13439; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13440; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 13441; CHECK-NEXT: vmv1r.v v8, v10 13442; CHECK-NEXT: ret 13443entry: 13444 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 13445 %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) 13446 ret <vscale x 2 x float> %1 13447} 13448 13449define <vscale x 2 x float> @test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13450; CHECK-LABEL: test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i8: 13451; CHECK: # %bb.0: # %entry 13452; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13453; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 13454; CHECK-NEXT: vmv1r.v v8, v10 13455; CHECK-NEXT: ret 13456entry: 13457 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13458 %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) 13459 ret <vscale x 2 x float> %1 13460} 13461 13462 13463define <vscale x 2 x float> @test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 13464; CHECK-LABEL: test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i16: 13465; CHECK: # %bb.0: # %entry 13466; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13467; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 13468; CHECK-NEXT: vmv1r.v v8, v10 13469; CHECK-NEXT: ret 13470entry: 13471 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 13472 %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) 13473 ret <vscale x 2 x float> %1 13474} 13475 13476define <vscale x 2 x float> @test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13477; CHECK-LABEL: test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i16: 13478; CHECK: # %bb.0: # %entry 13479; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13480; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 13481; CHECK-NEXT: vmv1r.v v8, v10 13482; CHECK-NEXT: ret 13483entry: 13484 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13485 %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) 13486 ret <vscale x 2 x float> %1 13487} 13488 13489 13490define <vscale x 2 x float> @test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 13491; CHECK-LABEL: test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i32: 13492; CHECK: # %bb.0: # %entry 13493; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13494; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 13495; CHECK-NEXT: vmv1r.v v8, v10 13496; CHECK-NEXT: ret 13497entry: 13498 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 13499 %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) 13500 ret <vscale x 2 x float> %1 13501} 13502 13503define <vscale x 2 x float> @test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13504; CHECK-LABEL: test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i32: 13505; CHECK: # %bb.0: # %entry 13506; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13507; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 13508; CHECK-NEXT: vmv1r.v v8, v10 13509; CHECK-NEXT: ret 13510entry: 13511 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13512 %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) 13513 ret <vscale x 2 x float> %1 13514} 13515 13516 13517define <vscale x 2 x float> @test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 13518; CHECK-LABEL: test_vluxseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i64: 13519; CHECK: # %bb.0: # %entry 13520; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13521; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 13522; CHECK-NEXT: vmv1r.v v8, v11 13523; CHECK-NEXT: ret 13524entry: 13525 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 13526 %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) 13527 ret <vscale x 2 x float> %1 13528} 13529 13530define <vscale x 2 x float> @test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13531; CHECK-LABEL: test_vluxseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t_nxv2i64: 13532; CHECK: # %bb.0: # %entry 13533; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13534; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 13535; CHECK-NEXT: vmv1r.v v8, v11 13536; CHECK-NEXT: ret 13537entry: 13538 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13539 %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) 13540 ret <vscale x 2 x float> %1 13541} 13542 13543 13544define <vscale x 4 x float> @test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 13545; CHECK-LABEL: test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i8: 13546; CHECK: # %bb.0: # %entry 13547; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13548; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 13549; CHECK-NEXT: vmv2r.v v8, v12 13550; CHECK-NEXT: ret 13551entry: 13552 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 5) 13553 %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) 13554 ret <vscale x 4 x float> %1 13555} 13556 13557define <vscale x 4 x float> @test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13558; CHECK-LABEL: test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i8: 13559; CHECK: # %bb.0: # %entry 13560; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13561; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 13562; CHECK-NEXT: vmv2r.v v8, v12 13563; CHECK-NEXT: ret 13564entry: 13565 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13566 %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) 13567 ret <vscale x 4 x float> %1 13568} 13569 13570 13571define <vscale x 4 x float> @test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 13572; CHECK-LABEL: test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i16: 13573; CHECK: # %bb.0: # %entry 13574; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13575; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 13576; CHECK-NEXT: vmv2r.v v8, v12 13577; CHECK-NEXT: ret 13578entry: 13579 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 5) 13580 %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) 13581 ret <vscale x 4 x float> %1 13582} 13583 13584define <vscale x 4 x float> @test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13585; CHECK-LABEL: test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i16: 13586; CHECK: # %bb.0: # %entry 13587; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13588; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 13589; CHECK-NEXT: vmv2r.v v8, v12 13590; CHECK-NEXT: ret 13591entry: 13592 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13593 %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) 13594 ret <vscale x 4 x float> %1 13595} 13596 13597 13598define <vscale x 4 x float> @test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 13599; CHECK-LABEL: test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i32: 13600; CHECK: # %bb.0: # %entry 13601; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13602; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 13603; CHECK-NEXT: vmv2r.v v8, v12 13604; CHECK-NEXT: ret 13605entry: 13606 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 5) 13607 %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) 13608 ret <vscale x 4 x float> %1 13609} 13610 13611define <vscale x 4 x float> @test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13612; CHECK-LABEL: test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i32: 13613; CHECK: # %bb.0: # %entry 13614; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13615; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 13616; CHECK-NEXT: vmv2r.v v8, v12 13617; CHECK-NEXT: ret 13618entry: 13619 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13620 %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) 13621 ret <vscale x 4 x float> %1 13622} 13623 13624 13625define <vscale x 4 x float> @test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 13626; CHECK-LABEL: test_vluxseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i64: 13627; CHECK: # %bb.0: # %entry 13628; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13629; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8 13630; CHECK-NEXT: vmv2r.v v8, v14 13631; CHECK-NEXT: ret 13632entry: 13633 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 5) 13634 %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) 13635 ret <vscale x 4 x float> %1 13636} 13637 13638define <vscale x 4 x float> @test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 13639; CHECK-LABEL: test_vluxseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t_nxv4i64: 13640; CHECK: # %bb.0: # %entry 13641; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 13642; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8, v0.t 13643; CHECK-NEXT: vmv2r.v v8, v14 13644; CHECK-NEXT: ret 13645entry: 13646 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5) 13647 %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) 13648 ret <vscale x 4 x float> %1 13649} 13650 13651 13652define <vscale x 1 x float> @test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 13653; CHECK-LABEL: test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i8: 13654; CHECK: # %bb.0: # %entry 13655; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13656; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 13657; CHECK-NEXT: vmv1r.v v8, v10 13658; CHECK-NEXT: ret 13659entry: 13660 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 13661 %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) 13662 ret <vscale x 1 x float> %1 13663} 13664 13665define <vscale x 1 x float> @test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13666; CHECK-LABEL: test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i8: 13667; CHECK: # %bb.0: # %entry 13668; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13669; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 13670; CHECK-NEXT: vmv1r.v v8, v10 13671; CHECK-NEXT: ret 13672entry: 13673 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13674 %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) 13675 ret <vscale x 1 x float> %1 13676} 13677 13678 13679define <vscale x 1 x float> @test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 13680; CHECK-LABEL: test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i16: 13681; CHECK: # %bb.0: # %entry 13682; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13683; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 13684; CHECK-NEXT: vmv1r.v v8, v10 13685; CHECK-NEXT: ret 13686entry: 13687 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 13688 %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) 13689 ret <vscale x 1 x float> %1 13690} 13691 13692define <vscale x 1 x float> @test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13693; CHECK-LABEL: test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i16: 13694; CHECK: # %bb.0: # %entry 13695; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13696; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 13697; CHECK-NEXT: vmv1r.v v8, v10 13698; CHECK-NEXT: ret 13699entry: 13700 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13701 %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) 13702 ret <vscale x 1 x float> %1 13703} 13704 13705 13706define <vscale x 1 x float> @test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 13707; CHECK-LABEL: test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i32: 13708; CHECK: # %bb.0: # %entry 13709; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13710; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 13711; CHECK-NEXT: vmv1r.v v8, v10 13712; CHECK-NEXT: ret 13713entry: 13714 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 13715 %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) 13716 ret <vscale x 1 x float> %1 13717} 13718 13719define <vscale x 1 x float> @test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13720; CHECK-LABEL: test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i32: 13721; CHECK: # %bb.0: # %entry 13722; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13723; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 13724; CHECK-NEXT: vmv1r.v v8, v10 13725; CHECK-NEXT: ret 13726entry: 13727 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13728 %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) 13729 ret <vscale x 1 x float> %1 13730} 13731 13732 13733define <vscale x 1 x float> @test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 13734; CHECK-LABEL: test_vluxseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i64: 13735; CHECK: # %bb.0: # %entry 13736; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13737; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 13738; CHECK-NEXT: vmv1r.v v8, v10 13739; CHECK-NEXT: ret 13740entry: 13741 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 13742 %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) 13743 ret <vscale x 1 x float> %1 13744} 13745 13746define <vscale x 1 x float> @test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13747; CHECK-LABEL: test_vluxseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t_nxv1i64: 13748; CHECK: # %bb.0: # %entry 13749; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13750; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 13751; CHECK-NEXT: vmv1r.v v8, v10 13752; CHECK-NEXT: ret 13753entry: 13754 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13755 %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) 13756 ret <vscale x 1 x float> %1 13757} 13758 13759 13760define <vscale x 2 x float> @test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 13761; CHECK-LABEL: test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i8: 13762; CHECK: # %bb.0: # %entry 13763; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13764; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 13765; CHECK-NEXT: vmv1r.v v8, v10 13766; CHECK-NEXT: ret 13767entry: 13768 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 13769 %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) 13770 ret <vscale x 2 x float> %1 13771} 13772 13773define <vscale x 2 x float> @test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13774; CHECK-LABEL: test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i8: 13775; CHECK: # %bb.0: # %entry 13776; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13777; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 13778; CHECK-NEXT: vmv1r.v v8, v10 13779; CHECK-NEXT: ret 13780entry: 13781 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13782 %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) 13783 ret <vscale x 2 x float> %1 13784} 13785 13786 13787define <vscale x 2 x float> @test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 13788; CHECK-LABEL: test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i16: 13789; CHECK: # %bb.0: # %entry 13790; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13791; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 13792; CHECK-NEXT: vmv1r.v v8, v10 13793; CHECK-NEXT: ret 13794entry: 13795 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 13796 %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) 13797 ret <vscale x 2 x float> %1 13798} 13799 13800define <vscale x 2 x float> @test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13801; CHECK-LABEL: test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i16: 13802; CHECK: # %bb.0: # %entry 13803; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13804; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 13805; CHECK-NEXT: vmv1r.v v8, v10 13806; CHECK-NEXT: ret 13807entry: 13808 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13809 %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) 13810 ret <vscale x 2 x float> %1 13811} 13812 13813 13814define <vscale x 2 x float> @test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 13815; CHECK-LABEL: test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i32: 13816; CHECK: # %bb.0: # %entry 13817; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13818; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 13819; CHECK-NEXT: vmv1r.v v8, v10 13820; CHECK-NEXT: ret 13821entry: 13822 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 13823 %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) 13824 ret <vscale x 2 x float> %1 13825} 13826 13827define <vscale x 2 x float> @test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13828; CHECK-LABEL: test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i32: 13829; CHECK: # %bb.0: # %entry 13830; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13831; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 13832; CHECK-NEXT: vmv1r.v v8, v10 13833; CHECK-NEXT: ret 13834entry: 13835 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13836 %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) 13837 ret <vscale x 2 x float> %1 13838} 13839 13840 13841define <vscale x 2 x float> @test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 13842; CHECK-LABEL: test_vluxseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i64: 13843; CHECK: # %bb.0: # %entry 13844; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13845; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8 13846; CHECK-NEXT: vmv1r.v v8, v11 13847; CHECK-NEXT: ret 13848entry: 13849 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 13850 %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) 13851 ret <vscale x 2 x float> %1 13852} 13853 13854define <vscale x 2 x float> @test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13855; CHECK-LABEL: test_vluxseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t_nxv2i64: 13856; CHECK: # %bb.0: # %entry 13857; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13858; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8, v0.t 13859; CHECK-NEXT: vmv1r.v v8, v11 13860; CHECK-NEXT: ret 13861entry: 13862 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13863 %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) 13864 ret <vscale x 2 x float> %1 13865} 13866 13867 13868define <vscale x 1 x float> @test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 13869; CHECK-LABEL: test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i8: 13870; CHECK: # %bb.0: # %entry 13871; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13872; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 13873; CHECK-NEXT: vmv1r.v v8, v10 13874; CHECK-NEXT: ret 13875entry: 13876 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 13877 %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) 13878 ret <vscale x 1 x float> %1 13879} 13880 13881define <vscale x 1 x float> @test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13882; CHECK-LABEL: test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i8: 13883; CHECK: # %bb.0: # %entry 13884; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13885; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 13886; CHECK-NEXT: vmv1r.v v8, v10 13887; CHECK-NEXT: ret 13888entry: 13889 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13890 %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) 13891 ret <vscale x 1 x float> %1 13892} 13893 13894 13895define <vscale x 1 x float> @test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 13896; CHECK-LABEL: test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i16: 13897; CHECK: # %bb.0: # %entry 13898; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13899; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 13900; CHECK-NEXT: vmv1r.v v8, v10 13901; CHECK-NEXT: ret 13902entry: 13903 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 13904 %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) 13905 ret <vscale x 1 x float> %1 13906} 13907 13908define <vscale x 1 x float> @test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13909; CHECK-LABEL: test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i16: 13910; CHECK: # %bb.0: # %entry 13911; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13912; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 13913; CHECK-NEXT: vmv1r.v v8, v10 13914; CHECK-NEXT: ret 13915entry: 13916 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13917 %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) 13918 ret <vscale x 1 x float> %1 13919} 13920 13921 13922define <vscale x 1 x float> @test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 13923; CHECK-LABEL: test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i32: 13924; CHECK: # %bb.0: # %entry 13925; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13926; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 13927; CHECK-NEXT: vmv1r.v v8, v10 13928; CHECK-NEXT: ret 13929entry: 13930 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 13931 %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) 13932 ret <vscale x 1 x float> %1 13933} 13934 13935define <vscale x 1 x float> @test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13936; CHECK-LABEL: test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i32: 13937; CHECK: # %bb.0: # %entry 13938; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13939; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 13940; CHECK-NEXT: vmv1r.v v8, v10 13941; CHECK-NEXT: ret 13942entry: 13943 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13944 %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) 13945 ret <vscale x 1 x float> %1 13946} 13947 13948 13949define <vscale x 1 x float> @test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 13950; CHECK-LABEL: test_vluxseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i64: 13951; CHECK: # %bb.0: # %entry 13952; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13953; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 13954; CHECK-NEXT: vmv1r.v v8, v10 13955; CHECK-NEXT: ret 13956entry: 13957 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 13958 %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) 13959 ret <vscale x 1 x float> %1 13960} 13961 13962define <vscale x 1 x float> @test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 13963; CHECK-LABEL: test_vluxseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t_nxv1i64: 13964; CHECK: # %bb.0: # %entry 13965; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 13966; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 13967; CHECK-NEXT: vmv1r.v v8, v10 13968; CHECK-NEXT: ret 13969entry: 13970 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 13971 %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) 13972 ret <vscale x 1 x float> %1 13973} 13974 13975 13976define <vscale x 2 x float> @test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 13977; CHECK-LABEL: test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i8: 13978; CHECK: # %bb.0: # %entry 13979; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13980; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 13981; CHECK-NEXT: vmv1r.v v8, v10 13982; CHECK-NEXT: ret 13983entry: 13984 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 13985 %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) 13986 ret <vscale x 2 x float> %1 13987} 13988 13989define <vscale x 2 x float> @test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 13990; CHECK-LABEL: test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i8: 13991; CHECK: # %bb.0: # %entry 13992; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 13993; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 13994; CHECK-NEXT: vmv1r.v v8, v10 13995; CHECK-NEXT: ret 13996entry: 13997 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 13998 %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) 13999 ret <vscale x 2 x float> %1 14000} 14001 14002 14003define <vscale x 2 x float> @test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 14004; CHECK-LABEL: test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i16: 14005; CHECK: # %bb.0: # %entry 14006; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14007; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 14008; CHECK-NEXT: vmv1r.v v8, v10 14009; CHECK-NEXT: ret 14010entry: 14011 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 14012 %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) 14013 ret <vscale x 2 x float> %1 14014} 14015 14016define <vscale x 2 x float> @test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14017; CHECK-LABEL: test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i16: 14018; CHECK: # %bb.0: # %entry 14019; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14020; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 14021; CHECK-NEXT: vmv1r.v v8, v10 14022; CHECK-NEXT: ret 14023entry: 14024 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14025 %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) 14026 ret <vscale x 2 x float> %1 14027} 14028 14029 14030define <vscale x 2 x float> @test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 14031; CHECK-LABEL: test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i32: 14032; CHECK: # %bb.0: # %entry 14033; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14034; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 14035; CHECK-NEXT: vmv1r.v v8, v10 14036; CHECK-NEXT: ret 14037entry: 14038 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 14039 %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) 14040 ret <vscale x 2 x float> %1 14041} 14042 14043define <vscale x 2 x float> @test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14044; CHECK-LABEL: test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i32: 14045; CHECK: # %bb.0: # %entry 14046; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14047; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 14048; CHECK-NEXT: vmv1r.v v8, v10 14049; CHECK-NEXT: ret 14050entry: 14051 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14052 %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) 14053 ret <vscale x 2 x float> %1 14054} 14055 14056 14057define <vscale x 2 x float> @test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 14058; CHECK-LABEL: test_vluxseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i64: 14059; CHECK: # %bb.0: # %entry 14060; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14061; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8 14062; CHECK-NEXT: vmv1r.v v8, v11 14063; CHECK-NEXT: ret 14064entry: 14065 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 14066 %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) 14067 ret <vscale x 2 x float> %1 14068} 14069 14070define <vscale x 2 x float> @test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14071; CHECK-LABEL: test_vluxseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t_nxv2i64: 14072; CHECK: # %bb.0: # %entry 14073; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14074; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8, v0.t 14075; CHECK-NEXT: vmv1r.v v8, v11 14076; CHECK-NEXT: ret 14077entry: 14078 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14079 %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) 14080 ret <vscale x 2 x float> %1 14081} 14082 14083 14084define <vscale x 1 x float> @test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 14085; CHECK-LABEL: test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i8: 14086; CHECK: # %bb.0: # %entry 14087; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14088; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 14089; CHECK-NEXT: vmv1r.v v8, v10 14090; CHECK-NEXT: ret 14091entry: 14092 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 14093 %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) 14094 ret <vscale x 1 x float> %1 14095} 14096 14097define <vscale x 1 x float> @test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14098; CHECK-LABEL: test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i8: 14099; CHECK: # %bb.0: # %entry 14100; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14101; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 14102; CHECK-NEXT: vmv1r.v v8, v10 14103; CHECK-NEXT: ret 14104entry: 14105 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14106 %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) 14107 ret <vscale x 1 x float> %1 14108} 14109 14110 14111define <vscale x 1 x float> @test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 14112; CHECK-LABEL: test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i16: 14113; CHECK: # %bb.0: # %entry 14114; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14115; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 14116; CHECK-NEXT: vmv1r.v v8, v10 14117; CHECK-NEXT: ret 14118entry: 14119 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 14120 %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) 14121 ret <vscale x 1 x float> %1 14122} 14123 14124define <vscale x 1 x float> @test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14125; CHECK-LABEL: test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i16: 14126; CHECK: # %bb.0: # %entry 14127; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14128; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 14129; CHECK-NEXT: vmv1r.v v8, v10 14130; CHECK-NEXT: ret 14131entry: 14132 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14133 %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) 14134 ret <vscale x 1 x float> %1 14135} 14136 14137 14138define <vscale x 1 x float> @test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 14139; CHECK-LABEL: test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i32: 14140; CHECK: # %bb.0: # %entry 14141; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14142; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 14143; CHECK-NEXT: vmv1r.v v8, v10 14144; CHECK-NEXT: ret 14145entry: 14146 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 14147 %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) 14148 ret <vscale x 1 x float> %1 14149} 14150 14151define <vscale x 1 x float> @test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14152; CHECK-LABEL: test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i32: 14153; CHECK: # %bb.0: # %entry 14154; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14155; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 14156; CHECK-NEXT: vmv1r.v v8, v10 14157; CHECK-NEXT: ret 14158entry: 14159 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14160 %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) 14161 ret <vscale x 1 x float> %1 14162} 14163 14164 14165define <vscale x 1 x float> @test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 14166; CHECK-LABEL: test_vluxseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i64: 14167; CHECK: # %bb.0: # %entry 14168; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14169; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 14170; CHECK-NEXT: vmv1r.v v8, v10 14171; CHECK-NEXT: ret 14172entry: 14173 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 14174 %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) 14175 ret <vscale x 1 x float> %1 14176} 14177 14178define <vscale x 1 x float> @test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14179; CHECK-LABEL: test_vluxseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t_nxv1i64: 14180; CHECK: # %bb.0: # %entry 14181; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14182; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 14183; CHECK-NEXT: vmv1r.v v8, v10 14184; CHECK-NEXT: ret 14185entry: 14186 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14187 %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) 14188 ret <vscale x 1 x float> %1 14189} 14190 14191 14192define <vscale x 2 x float> @test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 14193; CHECK-LABEL: test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i8: 14194; CHECK: # %bb.0: # %entry 14195; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14196; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 14197; CHECK-NEXT: vmv1r.v v8, v10 14198; CHECK-NEXT: ret 14199entry: 14200 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 14201 %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) 14202 ret <vscale x 2 x float> %1 14203} 14204 14205define <vscale x 2 x float> @test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14206; CHECK-LABEL: test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i8: 14207; CHECK: # %bb.0: # %entry 14208; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14209; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 14210; CHECK-NEXT: vmv1r.v v8, v10 14211; CHECK-NEXT: ret 14212entry: 14213 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14214 %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) 14215 ret <vscale x 2 x float> %1 14216} 14217 14218 14219define <vscale x 2 x float> @test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 14220; CHECK-LABEL: test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i16: 14221; CHECK: # %bb.0: # %entry 14222; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14223; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 14224; CHECK-NEXT: vmv1r.v v8, v10 14225; CHECK-NEXT: ret 14226entry: 14227 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 14228 %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) 14229 ret <vscale x 2 x float> %1 14230} 14231 14232define <vscale x 2 x float> @test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14233; CHECK-LABEL: test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i16: 14234; CHECK: # %bb.0: # %entry 14235; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14236; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 14237; CHECK-NEXT: vmv1r.v v8, v10 14238; CHECK-NEXT: ret 14239entry: 14240 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14241 %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) 14242 ret <vscale x 2 x float> %1 14243} 14244 14245 14246define <vscale x 2 x float> @test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 14247; CHECK-LABEL: test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i32: 14248; CHECK: # %bb.0: # %entry 14249; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14250; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 14251; CHECK-NEXT: vmv1r.v v8, v10 14252; CHECK-NEXT: ret 14253entry: 14254 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 14255 %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) 14256 ret <vscale x 2 x float> %1 14257} 14258 14259define <vscale x 2 x float> @test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14260; CHECK-LABEL: test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i32: 14261; CHECK: # %bb.0: # %entry 14262; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14263; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 14264; CHECK-NEXT: vmv1r.v v8, v10 14265; CHECK-NEXT: ret 14266entry: 14267 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14268 %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) 14269 ret <vscale x 2 x float> %1 14270} 14271 14272 14273define <vscale x 2 x float> @test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 14274; CHECK-LABEL: test_vluxseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i64: 14275; CHECK: # %bb.0: # %entry 14276; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14277; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8 14278; CHECK-NEXT: vmv1r.v v8, v11 14279; CHECK-NEXT: ret 14280entry: 14281 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 14282 %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) 14283 ret <vscale x 2 x float> %1 14284} 14285 14286define <vscale x 2 x float> @test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14287; CHECK-LABEL: test_vluxseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t_nxv2i64: 14288; CHECK: # %bb.0: # %entry 14289; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14290; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8, v0.t 14291; CHECK-NEXT: vmv1r.v v8, v11 14292; CHECK-NEXT: ret 14293entry: 14294 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14295 %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) 14296 ret <vscale x 2 x float> %1 14297} 14298 14299 14300define <vscale x 1 x float> @test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 14301; CHECK-LABEL: test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i8: 14302; CHECK: # %bb.0: # %entry 14303; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14304; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 14305; CHECK-NEXT: vmv1r.v v8, v10 14306; CHECK-NEXT: ret 14307entry: 14308 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 5) 14309 %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) 14310 ret <vscale x 1 x float> %1 14311} 14312 14313define <vscale x 1 x float> @test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14314; CHECK-LABEL: test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i8: 14315; CHECK: # %bb.0: # %entry 14316; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14317; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 14318; CHECK-NEXT: vmv1r.v v8, v10 14319; CHECK-NEXT: ret 14320entry: 14321 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14322 %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) 14323 ret <vscale x 1 x float> %1 14324} 14325 14326 14327define <vscale x 1 x float> @test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 14328; CHECK-LABEL: test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i16: 14329; CHECK: # %bb.0: # %entry 14330; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14331; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 14332; CHECK-NEXT: vmv1r.v v8, v10 14333; CHECK-NEXT: ret 14334entry: 14335 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 5) 14336 %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) 14337 ret <vscale x 1 x float> %1 14338} 14339 14340define <vscale x 1 x float> @test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14341; CHECK-LABEL: test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i16: 14342; CHECK: # %bb.0: # %entry 14343; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14344; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 14345; CHECK-NEXT: vmv1r.v v8, v10 14346; CHECK-NEXT: ret 14347entry: 14348 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14349 %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) 14350 ret <vscale x 1 x float> %1 14351} 14352 14353 14354define <vscale x 1 x float> @test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 14355; CHECK-LABEL: test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i32: 14356; CHECK: # %bb.0: # %entry 14357; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14358; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 14359; CHECK-NEXT: vmv1r.v v8, v10 14360; CHECK-NEXT: ret 14361entry: 14362 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 5) 14363 %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) 14364 ret <vscale x 1 x float> %1 14365} 14366 14367define <vscale x 1 x float> @test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14368; CHECK-LABEL: test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i32: 14369; CHECK: # %bb.0: # %entry 14370; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14371; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 14372; CHECK-NEXT: vmv1r.v v8, v10 14373; CHECK-NEXT: ret 14374entry: 14375 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14376 %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) 14377 ret <vscale x 1 x float> %1 14378} 14379 14380 14381define <vscale x 1 x float> @test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 14382; CHECK-LABEL: test_vluxseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i64: 14383; CHECK: # %bb.0: # %entry 14384; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14385; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 14386; CHECK-NEXT: vmv1r.v v8, v10 14387; CHECK-NEXT: ret 14388entry: 14389 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 5) 14390 %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) 14391 ret <vscale x 1 x float> %1 14392} 14393 14394define <vscale x 1 x float> @test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14395; CHECK-LABEL: test_vluxseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t_nxv1i64: 14396; CHECK: # %bb.0: # %entry 14397; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 14398; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 14399; CHECK-NEXT: vmv1r.v v8, v10 14400; CHECK-NEXT: ret 14401entry: 14402 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5) 14403 %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) 14404 ret <vscale x 1 x float> %1 14405} 14406 14407 14408define <vscale x 2 x float> @test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 14409; CHECK-LABEL: test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i8: 14410; CHECK: # %bb.0: # %entry 14411; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14412; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 14413; CHECK-NEXT: vmv1r.v v8, v10 14414; CHECK-NEXT: ret 14415entry: 14416 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 5) 14417 %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) 14418 ret <vscale x 2 x float> %1 14419} 14420 14421define <vscale x 2 x float> @test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14422; CHECK-LABEL: test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i8: 14423; CHECK: # %bb.0: # %entry 14424; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14425; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 14426; CHECK-NEXT: vmv1r.v v8, v10 14427; CHECK-NEXT: ret 14428entry: 14429 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14430 %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) 14431 ret <vscale x 2 x float> %1 14432} 14433 14434 14435define <vscale x 2 x float> @test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 14436; CHECK-LABEL: test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i16: 14437; CHECK: # %bb.0: # %entry 14438; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14439; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 14440; CHECK-NEXT: vmv1r.v v8, v10 14441; CHECK-NEXT: ret 14442entry: 14443 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 5) 14444 %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) 14445 ret <vscale x 2 x float> %1 14446} 14447 14448define <vscale x 2 x float> @test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14449; CHECK-LABEL: test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i16: 14450; CHECK: # %bb.0: # %entry 14451; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14452; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 14453; CHECK-NEXT: vmv1r.v v8, v10 14454; CHECK-NEXT: ret 14455entry: 14456 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14457 %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) 14458 ret <vscale x 2 x float> %1 14459} 14460 14461 14462define <vscale x 2 x float> @test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 14463; CHECK-LABEL: test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i32: 14464; CHECK: # %bb.0: # %entry 14465; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14466; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 14467; CHECK-NEXT: vmv1r.v v8, v10 14468; CHECK-NEXT: ret 14469entry: 14470 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 5) 14471 %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) 14472 ret <vscale x 2 x float> %1 14473} 14474 14475define <vscale x 2 x float> @test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14476; CHECK-LABEL: test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i32: 14477; CHECK: # %bb.0: # %entry 14478; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14479; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 14480; CHECK-NEXT: vmv1r.v v8, v10 14481; CHECK-NEXT: ret 14482entry: 14483 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14484 %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) 14485 ret <vscale x 2 x float> %1 14486} 14487 14488 14489define <vscale x 2 x float> @test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 14490; CHECK-LABEL: test_vluxseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i64: 14491; CHECK: # %bb.0: # %entry 14492; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14493; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8 14494; CHECK-NEXT: vmv1r.v v8, v11 14495; CHECK-NEXT: ret 14496entry: 14497 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 5) 14498 %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) 14499 ret <vscale x 2 x float> %1 14500} 14501 14502define <vscale x 2 x float> @test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14503; CHECK-LABEL: test_vluxseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t_nxv2i64: 14504; CHECK: # %bb.0: # %entry 14505; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 14506; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8, v0.t 14507; CHECK-NEXT: vmv1r.v v8, v11 14508; CHECK-NEXT: ret 14509entry: 14510 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5) 14511 %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) 14512 ret <vscale x 2 x float> %1 14513} 14514 14515 14516define <vscale x 1 x double> @test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 14517; CHECK-LABEL: test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i8: 14518; CHECK: # %bb.0: # %entry 14519; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14520; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 14521; CHECK-NEXT: vmv1r.v v8, v10 14522; CHECK-NEXT: ret 14523entry: 14524 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 14525 %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) 14526 ret <vscale x 1 x double> %1 14527} 14528 14529define <vscale x 1 x double> @test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14530; CHECK-LABEL: test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i8: 14531; CHECK: # %bb.0: # %entry 14532; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14533; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 14534; CHECK-NEXT: vmv1r.v v8, v10 14535; CHECK-NEXT: ret 14536entry: 14537 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14538 %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) 14539 ret <vscale x 1 x double> %1 14540} 14541 14542 14543define <vscale x 1 x double> @test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 14544; CHECK-LABEL: test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i16: 14545; CHECK: # %bb.0: # %entry 14546; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14547; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 14548; CHECK-NEXT: vmv1r.v v8, v10 14549; CHECK-NEXT: ret 14550entry: 14551 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 14552 %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) 14553 ret <vscale x 1 x double> %1 14554} 14555 14556define <vscale x 1 x double> @test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14557; CHECK-LABEL: test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i16: 14558; CHECK: # %bb.0: # %entry 14559; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14560; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 14561; CHECK-NEXT: vmv1r.v v8, v10 14562; CHECK-NEXT: ret 14563entry: 14564 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14565 %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) 14566 ret <vscale x 1 x double> %1 14567} 14568 14569 14570define <vscale x 1 x double> @test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 14571; CHECK-LABEL: test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i32: 14572; CHECK: # %bb.0: # %entry 14573; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14574; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 14575; CHECK-NEXT: vmv1r.v v8, v10 14576; CHECK-NEXT: ret 14577entry: 14578 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 14579 %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) 14580 ret <vscale x 1 x double> %1 14581} 14582 14583define <vscale x 1 x double> @test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14584; CHECK-LABEL: test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i32: 14585; CHECK: # %bb.0: # %entry 14586; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14587; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 14588; CHECK-NEXT: vmv1r.v v8, v10 14589; CHECK-NEXT: ret 14590entry: 14591 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14592 %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) 14593 ret <vscale x 1 x double> %1 14594} 14595 14596 14597define <vscale x 1 x double> @test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 14598; CHECK-LABEL: test_vluxseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i64: 14599; CHECK: # %bb.0: # %entry 14600; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14601; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 14602; CHECK-NEXT: vmv1r.v v8, v10 14603; CHECK-NEXT: ret 14604entry: 14605 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 14606 %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) 14607 ret <vscale x 1 x double> %1 14608} 14609 14610define <vscale x 1 x double> @test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14611; CHECK-LABEL: test_vluxseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t_nxv1i64: 14612; CHECK: # %bb.0: # %entry 14613; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14614; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 14615; CHECK-NEXT: vmv1r.v v8, v10 14616; CHECK-NEXT: ret 14617entry: 14618 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14619 %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) 14620 ret <vscale x 1 x double> %1 14621} 14622 14623 14624define <vscale x 2 x double> @test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 14625; CHECK-LABEL: test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i8: 14626; CHECK: # %bb.0: # %entry 14627; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14628; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 14629; CHECK-NEXT: vmv2r.v v8, v12 14630; CHECK-NEXT: ret 14631entry: 14632 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 6) 14633 %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) 14634 ret <vscale x 2 x double> %1 14635} 14636 14637define <vscale x 2 x double> @test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14638; CHECK-LABEL: test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i8: 14639; CHECK: # %bb.0: # %entry 14640; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14641; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 14642; CHECK-NEXT: vmv2r.v v8, v12 14643; CHECK-NEXT: ret 14644entry: 14645 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 14646 %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) 14647 ret <vscale x 2 x double> %1 14648} 14649 14650 14651define <vscale x 2 x double> @test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 14652; CHECK-LABEL: test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i16: 14653; CHECK: # %bb.0: # %entry 14654; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14655; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 14656; CHECK-NEXT: vmv2r.v v8, v12 14657; CHECK-NEXT: ret 14658entry: 14659 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 6) 14660 %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) 14661 ret <vscale x 2 x double> %1 14662} 14663 14664define <vscale x 2 x double> @test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14665; CHECK-LABEL: test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i16: 14666; CHECK: # %bb.0: # %entry 14667; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14668; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 14669; CHECK-NEXT: vmv2r.v v8, v12 14670; CHECK-NEXT: ret 14671entry: 14672 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 14673 %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) 14674 ret <vscale x 2 x double> %1 14675} 14676 14677 14678define <vscale x 2 x double> @test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 14679; CHECK-LABEL: test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i32: 14680; CHECK: # %bb.0: # %entry 14681; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14682; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 14683; CHECK-NEXT: vmv2r.v v8, v12 14684; CHECK-NEXT: ret 14685entry: 14686 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 6) 14687 %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) 14688 ret <vscale x 2 x double> %1 14689} 14690 14691define <vscale x 2 x double> @test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14692; CHECK-LABEL: test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i32: 14693; CHECK: # %bb.0: # %entry 14694; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14695; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 14696; CHECK-NEXT: vmv2r.v v8, v12 14697; CHECK-NEXT: ret 14698entry: 14699 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 14700 %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) 14701 ret <vscale x 2 x double> %1 14702} 14703 14704 14705define <vscale x 2 x double> @test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 14706; CHECK-LABEL: test_vluxseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i64: 14707; CHECK: # %bb.0: # %entry 14708; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14709; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 14710; CHECK-NEXT: vmv2r.v v8, v12 14711; CHECK-NEXT: ret 14712entry: 14713 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 6) 14714 %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) 14715 ret <vscale x 2 x double> %1 14716} 14717 14718define <vscale x 2 x double> @test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14719; CHECK-LABEL: test_vluxseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t_nxv2i64: 14720; CHECK: # %bb.0: # %entry 14721; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14722; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 14723; CHECK-NEXT: vmv2r.v v8, v12 14724; CHECK-NEXT: ret 14725entry: 14726 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 14727 %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) 14728 ret <vscale x 2 x double> %1 14729} 14730 14731 14732define <vscale x 4 x double> @test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 14733; CHECK-LABEL: test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i8: 14734; CHECK: # %bb.0: # %entry 14735; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14736; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 14737; CHECK-NEXT: vmv4r.v v8, v16 14738; CHECK-NEXT: ret 14739entry: 14740 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 6) 14741 %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) 14742 ret <vscale x 4 x double> %1 14743} 14744 14745define <vscale x 4 x double> @test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 14746; CHECK-LABEL: test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i8: 14747; CHECK: # %bb.0: # %entry 14748; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14749; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 14750; CHECK-NEXT: vmv4r.v v8, v16 14751; CHECK-NEXT: ret 14752entry: 14753 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 14754 %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) 14755 ret <vscale x 4 x double> %1 14756} 14757 14758 14759define <vscale x 4 x double> @test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 14760; CHECK-LABEL: test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i16: 14761; CHECK: # %bb.0: # %entry 14762; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14763; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 14764; CHECK-NEXT: vmv4r.v v8, v16 14765; CHECK-NEXT: ret 14766entry: 14767 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 6) 14768 %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) 14769 ret <vscale x 4 x double> %1 14770} 14771 14772define <vscale x 4 x double> @test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 14773; CHECK-LABEL: test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i16: 14774; CHECK: # %bb.0: # %entry 14775; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14776; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 14777; CHECK-NEXT: vmv4r.v v8, v16 14778; CHECK-NEXT: ret 14779entry: 14780 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 14781 %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) 14782 ret <vscale x 4 x double> %1 14783} 14784 14785 14786define <vscale x 4 x double> @test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 14787; CHECK-LABEL: test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i32: 14788; CHECK: # %bb.0: # %entry 14789; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14790; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 14791; CHECK-NEXT: vmv4r.v v8, v16 14792; CHECK-NEXT: ret 14793entry: 14794 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 6) 14795 %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) 14796 ret <vscale x 4 x double> %1 14797} 14798 14799define <vscale x 4 x double> @test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 14800; CHECK-LABEL: test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i32: 14801; CHECK: # %bb.0: # %entry 14802; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14803; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 14804; CHECK-NEXT: vmv4r.v v8, v16 14805; CHECK-NEXT: ret 14806entry: 14807 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 14808 %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) 14809 ret <vscale x 4 x double> %1 14810} 14811 14812 14813define <vscale x 4 x double> @test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 14814; CHECK-LABEL: test_vluxseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i64: 14815; CHECK: # %bb.0: # %entry 14816; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14817; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 14818; CHECK-NEXT: vmv4r.v v8, v16 14819; CHECK-NEXT: ret 14820entry: 14821 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 6) 14822 %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) 14823 ret <vscale x 4 x double> %1 14824} 14825 14826define <vscale x 4 x double> @test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 14827; CHECK-LABEL: test_vluxseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t_nxv4i64: 14828; CHECK: # %bb.0: # %entry 14829; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 14830; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 14831; CHECK-NEXT: vmv4r.v v8, v16 14832; CHECK-NEXT: ret 14833entry: 14834 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6) 14835 %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) 14836 ret <vscale x 4 x double> %1 14837} 14838 14839 14840define <vscale x 1 x double> @test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 14841; CHECK-LABEL: test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i8: 14842; CHECK: # %bb.0: # %entry 14843; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14844; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 14845; CHECK-NEXT: vmv1r.v v8, v10 14846; CHECK-NEXT: ret 14847entry: 14848 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 14849 %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) 14850 ret <vscale x 1 x double> %1 14851} 14852 14853define <vscale x 1 x double> @test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14854; CHECK-LABEL: test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i8: 14855; CHECK: # %bb.0: # %entry 14856; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14857; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 14858; CHECK-NEXT: vmv1r.v v8, v10 14859; CHECK-NEXT: ret 14860entry: 14861 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14862 %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) 14863 ret <vscale x 1 x double> %1 14864} 14865 14866 14867define <vscale x 1 x double> @test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 14868; CHECK-LABEL: test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i16: 14869; CHECK: # %bb.0: # %entry 14870; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14871; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 14872; CHECK-NEXT: vmv1r.v v8, v10 14873; CHECK-NEXT: ret 14874entry: 14875 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 14876 %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) 14877 ret <vscale x 1 x double> %1 14878} 14879 14880define <vscale x 1 x double> @test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14881; CHECK-LABEL: test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i16: 14882; CHECK: # %bb.0: # %entry 14883; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14884; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 14885; CHECK-NEXT: vmv1r.v v8, v10 14886; CHECK-NEXT: ret 14887entry: 14888 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14889 %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) 14890 ret <vscale x 1 x double> %1 14891} 14892 14893 14894define <vscale x 1 x double> @test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 14895; CHECK-LABEL: test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i32: 14896; CHECK: # %bb.0: # %entry 14897; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14898; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 14899; CHECK-NEXT: vmv1r.v v8, v10 14900; CHECK-NEXT: ret 14901entry: 14902 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 14903 %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) 14904 ret <vscale x 1 x double> %1 14905} 14906 14907define <vscale x 1 x double> @test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14908; CHECK-LABEL: test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i32: 14909; CHECK: # %bb.0: # %entry 14910; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14911; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 14912; CHECK-NEXT: vmv1r.v v8, v10 14913; CHECK-NEXT: ret 14914entry: 14915 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14916 %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) 14917 ret <vscale x 1 x double> %1 14918} 14919 14920 14921define <vscale x 1 x double> @test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 14922; CHECK-LABEL: test_vluxseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i64: 14923; CHECK: # %bb.0: # %entry 14924; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14925; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 14926; CHECK-NEXT: vmv1r.v v8, v10 14927; CHECK-NEXT: ret 14928entry: 14929 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 14930 %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) 14931 ret <vscale x 1 x double> %1 14932} 14933 14934define <vscale x 1 x double> @test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 14935; CHECK-LABEL: test_vluxseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t_nxv1i64: 14936; CHECK: # %bb.0: # %entry 14937; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 14938; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 14939; CHECK-NEXT: vmv1r.v v8, v10 14940; CHECK-NEXT: ret 14941entry: 14942 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 14943 %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) 14944 ret <vscale x 1 x double> %1 14945} 14946 14947 14948define <vscale x 2 x double> @test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 14949; CHECK-LABEL: test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i8: 14950; CHECK: # %bb.0: # %entry 14951; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14952; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 14953; CHECK-NEXT: vmv2r.v v8, v12 14954; CHECK-NEXT: ret 14955entry: 14956 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 6) 14957 %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) 14958 ret <vscale x 2 x double> %1 14959} 14960 14961define <vscale x 2 x double> @test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14962; CHECK-LABEL: test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i8: 14963; CHECK: # %bb.0: # %entry 14964; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14965; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 14966; CHECK-NEXT: vmv2r.v v8, v12 14967; CHECK-NEXT: ret 14968entry: 14969 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 14970 %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) 14971 ret <vscale x 2 x double> %1 14972} 14973 14974 14975define <vscale x 2 x double> @test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 14976; CHECK-LABEL: test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i16: 14977; CHECK: # %bb.0: # %entry 14978; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14979; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 14980; CHECK-NEXT: vmv2r.v v8, v12 14981; CHECK-NEXT: ret 14982entry: 14983 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 6) 14984 %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) 14985 ret <vscale x 2 x double> %1 14986} 14987 14988define <vscale x 2 x double> @test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 14989; CHECK-LABEL: test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i16: 14990; CHECK: # %bb.0: # %entry 14991; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 14992; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 14993; CHECK-NEXT: vmv2r.v v8, v12 14994; CHECK-NEXT: ret 14995entry: 14996 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 14997 %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) 14998 ret <vscale x 2 x double> %1 14999} 15000 15001 15002define <vscale x 2 x double> @test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 15003; CHECK-LABEL: test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i32: 15004; CHECK: # %bb.0: # %entry 15005; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15006; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 15007; CHECK-NEXT: vmv2r.v v8, v12 15008; CHECK-NEXT: ret 15009entry: 15010 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 6) 15011 %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) 15012 ret <vscale x 2 x double> %1 15013} 15014 15015define <vscale x 2 x double> @test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15016; CHECK-LABEL: test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i32: 15017; CHECK: # %bb.0: # %entry 15018; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15019; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 15020; CHECK-NEXT: vmv2r.v v8, v12 15021; CHECK-NEXT: ret 15022entry: 15023 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 15024 %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) 15025 ret <vscale x 2 x double> %1 15026} 15027 15028 15029define <vscale x 2 x double> @test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 15030; CHECK-LABEL: test_vluxseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i64: 15031; CHECK: # %bb.0: # %entry 15032; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15033; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 15034; CHECK-NEXT: vmv2r.v v8, v12 15035; CHECK-NEXT: ret 15036entry: 15037 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 6) 15038 %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) 15039 ret <vscale x 2 x double> %1 15040} 15041 15042define <vscale x 2 x double> @test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15043; CHECK-LABEL: test_vluxseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t_nxv2i64: 15044; CHECK: # %bb.0: # %entry 15045; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15046; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 15047; CHECK-NEXT: vmv2r.v v8, v12 15048; CHECK-NEXT: ret 15049entry: 15050 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 15051 %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) 15052 ret <vscale x 2 x double> %1 15053} 15054 15055 15056define <vscale x 1 x double> @test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 15057; CHECK-LABEL: test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i8: 15058; CHECK: # %bb.0: # %entry 15059; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15060; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 15061; CHECK-NEXT: vmv1r.v v8, v10 15062; CHECK-NEXT: ret 15063entry: 15064 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 15065 %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) 15066 ret <vscale x 1 x double> %1 15067} 15068 15069define <vscale x 1 x double> @test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15070; CHECK-LABEL: test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i8: 15071; CHECK: # %bb.0: # %entry 15072; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15073; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 15074; CHECK-NEXT: vmv1r.v v8, v10 15075; CHECK-NEXT: ret 15076entry: 15077 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15078 %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) 15079 ret <vscale x 1 x double> %1 15080} 15081 15082 15083define <vscale x 1 x double> @test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 15084; CHECK-LABEL: test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i16: 15085; CHECK: # %bb.0: # %entry 15086; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15087; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 15088; CHECK-NEXT: vmv1r.v v8, v10 15089; CHECK-NEXT: ret 15090entry: 15091 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 15092 %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) 15093 ret <vscale x 1 x double> %1 15094} 15095 15096define <vscale x 1 x double> @test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15097; CHECK-LABEL: test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i16: 15098; CHECK: # %bb.0: # %entry 15099; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15100; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 15101; CHECK-NEXT: vmv1r.v v8, v10 15102; CHECK-NEXT: ret 15103entry: 15104 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15105 %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) 15106 ret <vscale x 1 x double> %1 15107} 15108 15109 15110define <vscale x 1 x double> @test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 15111; CHECK-LABEL: test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i32: 15112; CHECK: # %bb.0: # %entry 15113; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15114; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 15115; CHECK-NEXT: vmv1r.v v8, v10 15116; CHECK-NEXT: ret 15117entry: 15118 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 15119 %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) 15120 ret <vscale x 1 x double> %1 15121} 15122 15123define <vscale x 1 x double> @test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15124; CHECK-LABEL: test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i32: 15125; CHECK: # %bb.0: # %entry 15126; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15127; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 15128; CHECK-NEXT: vmv1r.v v8, v10 15129; CHECK-NEXT: ret 15130entry: 15131 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15132 %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) 15133 ret <vscale x 1 x double> %1 15134} 15135 15136 15137define <vscale x 1 x double> @test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 15138; CHECK-LABEL: test_vluxseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i64: 15139; CHECK: # %bb.0: # %entry 15140; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15141; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 15142; CHECK-NEXT: vmv1r.v v8, v10 15143; CHECK-NEXT: ret 15144entry: 15145 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 15146 %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) 15147 ret <vscale x 1 x double> %1 15148} 15149 15150define <vscale x 1 x double> @test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15151; CHECK-LABEL: test_vluxseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t_nxv1i64: 15152; CHECK: # %bb.0: # %entry 15153; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15154; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 15155; CHECK-NEXT: vmv1r.v v8, v10 15156; CHECK-NEXT: ret 15157entry: 15158 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15159 %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) 15160 ret <vscale x 1 x double> %1 15161} 15162 15163 15164define <vscale x 2 x double> @test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 15165; CHECK-LABEL: test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i8: 15166; CHECK: # %bb.0: # %entry 15167; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15168; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 15169; CHECK-NEXT: vmv2r.v v8, v12 15170; CHECK-NEXT: ret 15171entry: 15172 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 6) 15173 %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) 15174 ret <vscale x 2 x double> %1 15175} 15176 15177define <vscale x 2 x double> @test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15178; CHECK-LABEL: test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i8: 15179; CHECK: # %bb.0: # %entry 15180; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15181; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 15182; CHECK-NEXT: vmv2r.v v8, v12 15183; CHECK-NEXT: ret 15184entry: 15185 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 15186 %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) 15187 ret <vscale x 2 x double> %1 15188} 15189 15190 15191define <vscale x 2 x double> @test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 15192; CHECK-LABEL: test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i16: 15193; CHECK: # %bb.0: # %entry 15194; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15195; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 15196; CHECK-NEXT: vmv2r.v v8, v12 15197; CHECK-NEXT: ret 15198entry: 15199 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 6) 15200 %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) 15201 ret <vscale x 2 x double> %1 15202} 15203 15204define <vscale x 2 x double> @test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15205; CHECK-LABEL: test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i16: 15206; CHECK: # %bb.0: # %entry 15207; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15208; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 15209; CHECK-NEXT: vmv2r.v v8, v12 15210; CHECK-NEXT: ret 15211entry: 15212 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 15213 %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) 15214 ret <vscale x 2 x double> %1 15215} 15216 15217 15218define <vscale x 2 x double> @test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 15219; CHECK-LABEL: test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i32: 15220; CHECK: # %bb.0: # %entry 15221; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15222; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 15223; CHECK-NEXT: vmv2r.v v8, v12 15224; CHECK-NEXT: ret 15225entry: 15226 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 6) 15227 %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) 15228 ret <vscale x 2 x double> %1 15229} 15230 15231define <vscale x 2 x double> @test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15232; CHECK-LABEL: test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i32: 15233; CHECK: # %bb.0: # %entry 15234; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15235; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 15236; CHECK-NEXT: vmv2r.v v8, v12 15237; CHECK-NEXT: ret 15238entry: 15239 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 15240 %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) 15241 ret <vscale x 2 x double> %1 15242} 15243 15244 15245define <vscale x 2 x double> @test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 15246; CHECK-LABEL: test_vluxseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i64: 15247; CHECK: # %bb.0: # %entry 15248; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15249; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 15250; CHECK-NEXT: vmv2r.v v8, v12 15251; CHECK-NEXT: ret 15252entry: 15253 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 6) 15254 %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) 15255 ret <vscale x 2 x double> %1 15256} 15257 15258define <vscale x 2 x double> @test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15259; CHECK-LABEL: test_vluxseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t_nxv2i64: 15260; CHECK: # %bb.0: # %entry 15261; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 15262; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 15263; CHECK-NEXT: vmv2r.v v8, v12 15264; CHECK-NEXT: ret 15265entry: 15266 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6) 15267 %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) 15268 ret <vscale x 2 x double> %1 15269} 15270 15271 15272define <vscale x 1 x double> @test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 15273; CHECK-LABEL: test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i8: 15274; CHECK: # %bb.0: # %entry 15275; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15276; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 15277; CHECK-NEXT: vmv1r.v v8, v10 15278; CHECK-NEXT: ret 15279entry: 15280 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 15281 %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) 15282 ret <vscale x 1 x double> %1 15283} 15284 15285define <vscale x 1 x double> @test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15286; CHECK-LABEL: test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i8: 15287; CHECK: # %bb.0: # %entry 15288; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15289; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 15290; CHECK-NEXT: vmv1r.v v8, v10 15291; CHECK-NEXT: ret 15292entry: 15293 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15294 %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) 15295 ret <vscale x 1 x double> %1 15296} 15297 15298 15299define <vscale x 1 x double> @test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 15300; CHECK-LABEL: test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i16: 15301; CHECK: # %bb.0: # %entry 15302; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15303; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 15304; CHECK-NEXT: vmv1r.v v8, v10 15305; CHECK-NEXT: ret 15306entry: 15307 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 15308 %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) 15309 ret <vscale x 1 x double> %1 15310} 15311 15312define <vscale x 1 x double> @test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15313; CHECK-LABEL: test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i16: 15314; CHECK: # %bb.0: # %entry 15315; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15316; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 15317; CHECK-NEXT: vmv1r.v v8, v10 15318; CHECK-NEXT: ret 15319entry: 15320 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15321 %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) 15322 ret <vscale x 1 x double> %1 15323} 15324 15325 15326define <vscale x 1 x double> @test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 15327; CHECK-LABEL: test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i32: 15328; CHECK: # %bb.0: # %entry 15329; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15330; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 15331; CHECK-NEXT: vmv1r.v v8, v10 15332; CHECK-NEXT: ret 15333entry: 15334 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 15335 %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) 15336 ret <vscale x 1 x double> %1 15337} 15338 15339define <vscale x 1 x double> @test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15340; CHECK-LABEL: test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i32: 15341; CHECK: # %bb.0: # %entry 15342; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15343; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 15344; CHECK-NEXT: vmv1r.v v8, v10 15345; CHECK-NEXT: ret 15346entry: 15347 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15348 %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) 15349 ret <vscale x 1 x double> %1 15350} 15351 15352 15353define <vscale x 1 x double> @test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 15354; CHECK-LABEL: test_vluxseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i64: 15355; CHECK: # %bb.0: # %entry 15356; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15357; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 15358; CHECK-NEXT: vmv1r.v v8, v10 15359; CHECK-NEXT: ret 15360entry: 15361 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 15362 %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) 15363 ret <vscale x 1 x double> %1 15364} 15365 15366define <vscale x 1 x double> @test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15367; CHECK-LABEL: test_vluxseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t_nxv1i64: 15368; CHECK: # %bb.0: # %entry 15369; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15370; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 15371; CHECK-NEXT: vmv1r.v v8, v10 15372; CHECK-NEXT: ret 15373entry: 15374 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15375 %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) 15376 ret <vscale x 1 x double> %1 15377} 15378 15379 15380define <vscale x 1 x double> @test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 15381; CHECK-LABEL: test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i8: 15382; CHECK: # %bb.0: # %entry 15383; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15384; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 15385; CHECK-NEXT: vmv1r.v v8, v10 15386; CHECK-NEXT: ret 15387entry: 15388 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 15389 %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) 15390 ret <vscale x 1 x double> %1 15391} 15392 15393define <vscale x 1 x double> @test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15394; CHECK-LABEL: test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i8: 15395; CHECK: # %bb.0: # %entry 15396; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15397; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 15398; CHECK-NEXT: vmv1r.v v8, v10 15399; CHECK-NEXT: ret 15400entry: 15401 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15402 %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) 15403 ret <vscale x 1 x double> %1 15404} 15405 15406 15407define <vscale x 1 x double> @test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 15408; CHECK-LABEL: test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i16: 15409; CHECK: # %bb.0: # %entry 15410; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15411; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 15412; CHECK-NEXT: vmv1r.v v8, v10 15413; CHECK-NEXT: ret 15414entry: 15415 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 15416 %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) 15417 ret <vscale x 1 x double> %1 15418} 15419 15420define <vscale x 1 x double> @test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15421; CHECK-LABEL: test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i16: 15422; CHECK: # %bb.0: # %entry 15423; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15424; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 15425; CHECK-NEXT: vmv1r.v v8, v10 15426; CHECK-NEXT: ret 15427entry: 15428 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15429 %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) 15430 ret <vscale x 1 x double> %1 15431} 15432 15433 15434define <vscale x 1 x double> @test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 15435; CHECK-LABEL: test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i32: 15436; CHECK: # %bb.0: # %entry 15437; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15438; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 15439; CHECK-NEXT: vmv1r.v v8, v10 15440; CHECK-NEXT: ret 15441entry: 15442 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 15443 %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) 15444 ret <vscale x 1 x double> %1 15445} 15446 15447define <vscale x 1 x double> @test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15448; CHECK-LABEL: test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i32: 15449; CHECK: # %bb.0: # %entry 15450; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15451; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 15452; CHECK-NEXT: vmv1r.v v8, v10 15453; CHECK-NEXT: ret 15454entry: 15455 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15456 %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) 15457 ret <vscale x 1 x double> %1 15458} 15459 15460 15461define <vscale x 1 x double> @test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 15462; CHECK-LABEL: test_vluxseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i64: 15463; CHECK: # %bb.0: # %entry 15464; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15465; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 15466; CHECK-NEXT: vmv1r.v v8, v10 15467; CHECK-NEXT: ret 15468entry: 15469 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 15470 %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) 15471 ret <vscale x 1 x double> %1 15472} 15473 15474define <vscale x 1 x double> @test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15475; CHECK-LABEL: test_vluxseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t_nxv1i64: 15476; CHECK: # %bb.0: # %entry 15477; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15478; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 15479; CHECK-NEXT: vmv1r.v v8, v10 15480; CHECK-NEXT: ret 15481entry: 15482 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15483 %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) 15484 ret <vscale x 1 x double> %1 15485} 15486 15487 15488define <vscale x 1 x double> @test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 15489; CHECK-LABEL: test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i8: 15490; CHECK: # %bb.0: # %entry 15491; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15492; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 15493; CHECK-NEXT: vmv1r.v v8, v10 15494; CHECK-NEXT: ret 15495entry: 15496 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 15497 %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) 15498 ret <vscale x 1 x double> %1 15499} 15500 15501define <vscale x 1 x double> @test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15502; CHECK-LABEL: test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i8: 15503; CHECK: # %bb.0: # %entry 15504; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15505; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 15506; CHECK-NEXT: vmv1r.v v8, v10 15507; CHECK-NEXT: ret 15508entry: 15509 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15510 %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) 15511 ret <vscale x 1 x double> %1 15512} 15513 15514 15515define <vscale x 1 x double> @test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 15516; CHECK-LABEL: test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i16: 15517; CHECK: # %bb.0: # %entry 15518; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15519; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 15520; CHECK-NEXT: vmv1r.v v8, v10 15521; CHECK-NEXT: ret 15522entry: 15523 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 15524 %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) 15525 ret <vscale x 1 x double> %1 15526} 15527 15528define <vscale x 1 x double> @test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15529; CHECK-LABEL: test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i16: 15530; CHECK: # %bb.0: # %entry 15531; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15532; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 15533; CHECK-NEXT: vmv1r.v v8, v10 15534; CHECK-NEXT: ret 15535entry: 15536 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15537 %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) 15538 ret <vscale x 1 x double> %1 15539} 15540 15541 15542define <vscale x 1 x double> @test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 15543; CHECK-LABEL: test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i32: 15544; CHECK: # %bb.0: # %entry 15545; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15546; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 15547; CHECK-NEXT: vmv1r.v v8, v10 15548; CHECK-NEXT: ret 15549entry: 15550 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 15551 %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) 15552 ret <vscale x 1 x double> %1 15553} 15554 15555define <vscale x 1 x double> @test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15556; CHECK-LABEL: test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i32: 15557; CHECK: # %bb.0: # %entry 15558; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15559; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 15560; CHECK-NEXT: vmv1r.v v8, v10 15561; CHECK-NEXT: ret 15562entry: 15563 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15564 %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) 15565 ret <vscale x 1 x double> %1 15566} 15567 15568 15569define <vscale x 1 x double> @test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 15570; CHECK-LABEL: test_vluxseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i64: 15571; CHECK: # %bb.0: # %entry 15572; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15573; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 15574; CHECK-NEXT: vmv1r.v v8, v10 15575; CHECK-NEXT: ret 15576entry: 15577 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 15578 %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) 15579 ret <vscale x 1 x double> %1 15580} 15581 15582define <vscale x 1 x double> @test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15583; CHECK-LABEL: test_vluxseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t_nxv1i64: 15584; CHECK: # %bb.0: # %entry 15585; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15586; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 15587; CHECK-NEXT: vmv1r.v v8, v10 15588; CHECK-NEXT: ret 15589entry: 15590 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15591 %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) 15592 ret <vscale x 1 x double> %1 15593} 15594 15595 15596define <vscale x 1 x double> @test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 15597; CHECK-LABEL: test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i8: 15598; CHECK: # %bb.0: # %entry 15599; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15600; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 15601; CHECK-NEXT: vmv1r.v v8, v10 15602; CHECK-NEXT: ret 15603entry: 15604 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 6) 15605 %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) 15606 ret <vscale x 1 x double> %1 15607} 15608 15609define <vscale x 1 x double> @test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15610; CHECK-LABEL: test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i8: 15611; CHECK: # %bb.0: # %entry 15612; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15613; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 15614; CHECK-NEXT: vmv1r.v v8, v10 15615; CHECK-NEXT: ret 15616entry: 15617 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15618 %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) 15619 ret <vscale x 1 x double> %1 15620} 15621 15622 15623define <vscale x 1 x double> @test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 15624; CHECK-LABEL: test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i16: 15625; CHECK: # %bb.0: # %entry 15626; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15627; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 15628; CHECK-NEXT: vmv1r.v v8, v10 15629; CHECK-NEXT: ret 15630entry: 15631 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 6) 15632 %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) 15633 ret <vscale x 1 x double> %1 15634} 15635 15636define <vscale x 1 x double> @test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15637; CHECK-LABEL: test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i16: 15638; CHECK: # %bb.0: # %entry 15639; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15640; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 15641; CHECK-NEXT: vmv1r.v v8, v10 15642; CHECK-NEXT: ret 15643entry: 15644 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15645 %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) 15646 ret <vscale x 1 x double> %1 15647} 15648 15649 15650define <vscale x 1 x double> @test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 15651; CHECK-LABEL: test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i32: 15652; CHECK: # %bb.0: # %entry 15653; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15654; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 15655; CHECK-NEXT: vmv1r.v v8, v10 15656; CHECK-NEXT: ret 15657entry: 15658 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 6) 15659 %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) 15660 ret <vscale x 1 x double> %1 15661} 15662 15663define <vscale x 1 x double> @test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15664; CHECK-LABEL: test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i32: 15665; CHECK: # %bb.0: # %entry 15666; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15667; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 15668; CHECK-NEXT: vmv1r.v v8, v10 15669; CHECK-NEXT: ret 15670entry: 15671 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15672 %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) 15673 ret <vscale x 1 x double> %1 15674} 15675 15676 15677define <vscale x 1 x double> @test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 15678; CHECK-LABEL: test_vluxseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i64: 15679; CHECK: # %bb.0: # %entry 15680; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15681; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 15682; CHECK-NEXT: vmv1r.v v8, v10 15683; CHECK-NEXT: ret 15684entry: 15685 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 6) 15686 %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) 15687 ret <vscale x 1 x double> %1 15688} 15689 15690define <vscale x 1 x double> @test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15691; CHECK-LABEL: test_vluxseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t_nxv1i64: 15692; CHECK: # %bb.0: # %entry 15693; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 15694; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 15695; CHECK-NEXT: vmv1r.v v8, v10 15696; CHECK-NEXT: ret 15697entry: 15698 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6) 15699 %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) 15700 ret <vscale x 1 x double> %1 15701} 15702 15703 15704define <vscale x 1 x bfloat> @test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 15705; CHECK-LABEL: test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i8: 15706; CHECK: # %bb.0: # %entry 15707; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15708; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 15709; CHECK-NEXT: vmv1r.v v8, v10 15710; CHECK-NEXT: ret 15711entry: 15712 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 15713 %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) 15714 ret <vscale x 1 x bfloat> %1 15715} 15716 15717define <vscale x 1 x bfloat> @test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15718; CHECK-LABEL: test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i8: 15719; CHECK: # %bb.0: # %entry 15720; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15721; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 15722; CHECK-NEXT: vmv1r.v v8, v10 15723; CHECK-NEXT: ret 15724entry: 15725 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 15726 %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) 15727 ret <vscale x 1 x bfloat> %1 15728} 15729 15730 15731define <vscale x 1 x bfloat> @test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 15732; CHECK-LABEL: test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i16: 15733; CHECK: # %bb.0: # %entry 15734; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15735; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 15736; CHECK-NEXT: vmv1r.v v8, v10 15737; CHECK-NEXT: ret 15738entry: 15739 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 15740 %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) 15741 ret <vscale x 1 x bfloat> %1 15742} 15743 15744define <vscale x 1 x bfloat> @test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15745; CHECK-LABEL: test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i16: 15746; CHECK: # %bb.0: # %entry 15747; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15748; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 15749; CHECK-NEXT: vmv1r.v v8, v10 15750; CHECK-NEXT: ret 15751entry: 15752 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 15753 %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) 15754 ret <vscale x 1 x bfloat> %1 15755} 15756 15757 15758define <vscale x 1 x bfloat> @test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 15759; CHECK-LABEL: test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i32: 15760; CHECK: # %bb.0: # %entry 15761; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15762; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 15763; CHECK-NEXT: vmv1r.v v8, v10 15764; CHECK-NEXT: ret 15765entry: 15766 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 15767 %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) 15768 ret <vscale x 1 x bfloat> %1 15769} 15770 15771define <vscale x 1 x bfloat> @test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15772; CHECK-LABEL: test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i32: 15773; CHECK: # %bb.0: # %entry 15774; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15775; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 15776; CHECK-NEXT: vmv1r.v v8, v10 15777; CHECK-NEXT: ret 15778entry: 15779 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 15780 %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) 15781 ret <vscale x 1 x bfloat> %1 15782} 15783 15784 15785define <vscale x 1 x bfloat> @test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 15786; CHECK-LABEL: test_vluxseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i64: 15787; CHECK: # %bb.0: # %entry 15788; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15789; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8 15790; CHECK-NEXT: vmv1r.v v8, v10 15791; CHECK-NEXT: ret 15792entry: 15793 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv2i8_2t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 15794 %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) 15795 ret <vscale x 1 x bfloat> %1 15796} 15797 15798define <vscale x 1 x bfloat> @test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 15799; CHECK-LABEL: test_vluxseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t_nxv1i64: 15800; CHECK: # %bb.0: # %entry 15801; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 15802; CHECK-NEXT: vluxseg2ei64.v v9, (a0), v8, v0.t 15803; CHECK-NEXT: vmv1r.v v8, v10 15804; CHECK-NEXT: ret 15805entry: 15806 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 15807 %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) 15808 ret <vscale x 1 x bfloat> %1 15809} 15810 15811 15812define <vscale x 2 x bfloat> @test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 15813; CHECK-LABEL: test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i8: 15814; CHECK: # %bb.0: # %entry 15815; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15816; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 15817; CHECK-NEXT: vmv1r.v v8, v10 15818; CHECK-NEXT: ret 15819entry: 15820 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 15821 %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) 15822 ret <vscale x 2 x bfloat> %1 15823} 15824 15825define <vscale x 2 x bfloat> @test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15826; CHECK-LABEL: test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i8: 15827; CHECK: # %bb.0: # %entry 15828; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15829; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 15830; CHECK-NEXT: vmv1r.v v8, v10 15831; CHECK-NEXT: ret 15832entry: 15833 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 15834 %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) 15835 ret <vscale x 2 x bfloat> %1 15836} 15837 15838 15839define <vscale x 2 x bfloat> @test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 15840; CHECK-LABEL: test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i16: 15841; CHECK: # %bb.0: # %entry 15842; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15843; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 15844; CHECK-NEXT: vmv1r.v v8, v10 15845; CHECK-NEXT: ret 15846entry: 15847 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 15848 %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) 15849 ret <vscale x 2 x bfloat> %1 15850} 15851 15852define <vscale x 2 x bfloat> @test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15853; CHECK-LABEL: test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i16: 15854; CHECK: # %bb.0: # %entry 15855; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15856; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 15857; CHECK-NEXT: vmv1r.v v8, v10 15858; CHECK-NEXT: ret 15859entry: 15860 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 15861 %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) 15862 ret <vscale x 2 x bfloat> %1 15863} 15864 15865 15866define <vscale x 2 x bfloat> @test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 15867; CHECK-LABEL: test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i32: 15868; CHECK: # %bb.0: # %entry 15869; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15870; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8 15871; CHECK-NEXT: vmv1r.v v8, v10 15872; CHECK-NEXT: ret 15873entry: 15874 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 15875 %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) 15876 ret <vscale x 2 x bfloat> %1 15877} 15878 15879define <vscale x 2 x bfloat> @test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15880; CHECK-LABEL: test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i32: 15881; CHECK: # %bb.0: # %entry 15882; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15883; CHECK-NEXT: vluxseg2ei32.v v9, (a0), v8, v0.t 15884; CHECK-NEXT: vmv1r.v v8, v10 15885; CHECK-NEXT: ret 15886entry: 15887 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 15888 %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) 15889 ret <vscale x 2 x bfloat> %1 15890} 15891 15892 15893define <vscale x 2 x bfloat> @test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 15894; CHECK-LABEL: test_vluxseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i64: 15895; CHECK: # %bb.0: # %entry 15896; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15897; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8 15898; CHECK-NEXT: vmv1r.v v8, v11 15899; CHECK-NEXT: ret 15900entry: 15901 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv4i8_2t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 15902 %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) 15903 ret <vscale x 2 x bfloat> %1 15904} 15905 15906define <vscale x 2 x bfloat> @test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 15907; CHECK-LABEL: test_vluxseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t_nxv2i64: 15908; CHECK: # %bb.0: # %entry 15909; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 15910; CHECK-NEXT: vluxseg2ei64.v v10, (a0), v8, v0.t 15911; CHECK-NEXT: vmv1r.v v8, v11 15912; CHECK-NEXT: ret 15913entry: 15914 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 15915 %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) 15916 ret <vscale x 2 x bfloat> %1 15917} 15918 15919 15920define <vscale x 4 x bfloat> @test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 15921; CHECK-LABEL: test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i8: 15922; CHECK: # %bb.0: # %entry 15923; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 15924; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8 15925; CHECK-NEXT: vmv1r.v v8, v10 15926; CHECK-NEXT: ret 15927entry: 15928 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 15929 %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) 15930 ret <vscale x 4 x bfloat> %1 15931} 15932 15933define <vscale x 4 x bfloat> @test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 15934; CHECK-LABEL: test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i8: 15935; CHECK: # %bb.0: # %entry 15936; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 15937; CHECK-NEXT: vluxseg2ei8.v v9, (a0), v8, v0.t 15938; CHECK-NEXT: vmv1r.v v8, v10 15939; CHECK-NEXT: ret 15940entry: 15941 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 15942 %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) 15943 ret <vscale x 4 x bfloat> %1 15944} 15945 15946 15947define <vscale x 4 x bfloat> @test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 15948; CHECK-LABEL: test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i16: 15949; CHECK: # %bb.0: # %entry 15950; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 15951; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8 15952; CHECK-NEXT: vmv1r.v v8, v10 15953; CHECK-NEXT: ret 15954entry: 15955 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 15956 %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) 15957 ret <vscale x 4 x bfloat> %1 15958} 15959 15960define <vscale x 4 x bfloat> @test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 15961; CHECK-LABEL: test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i16: 15962; CHECK: # %bb.0: # %entry 15963; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 15964; CHECK-NEXT: vluxseg2ei16.v v9, (a0), v8, v0.t 15965; CHECK-NEXT: vmv1r.v v8, v10 15966; CHECK-NEXT: ret 15967entry: 15968 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 15969 %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) 15970 ret <vscale x 4 x bfloat> %1 15971} 15972 15973 15974define <vscale x 4 x bfloat> @test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 15975; CHECK-LABEL: test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i32: 15976; CHECK: # %bb.0: # %entry 15977; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 15978; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8 15979; CHECK-NEXT: vmv1r.v v8, v11 15980; CHECK-NEXT: ret 15981entry: 15982 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 15983 %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) 15984 ret <vscale x 4 x bfloat> %1 15985} 15986 15987define <vscale x 4 x bfloat> @test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 15988; CHECK-LABEL: test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i32: 15989; CHECK: # %bb.0: # %entry 15990; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 15991; CHECK-NEXT: vluxseg2ei32.v v10, (a0), v8, v0.t 15992; CHECK-NEXT: vmv1r.v v8, v11 15993; CHECK-NEXT: ret 15994entry: 15995 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 15996 %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) 15997 ret <vscale x 4 x bfloat> %1 15998} 15999 16000 16001define <vscale x 4 x bfloat> @test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 16002; CHECK-LABEL: test_vluxseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i64: 16003; CHECK: # %bb.0: # %entry 16004; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16005; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8 16006; CHECK-NEXT: vmv1r.v v8, v13 16007; CHECK-NEXT: ret 16008entry: 16009 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv8i8_2t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 16010 %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) 16011 ret <vscale x 4 x bfloat> %1 16012} 16013 16014define <vscale x 4 x bfloat> @test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16015; CHECK-LABEL: test_vluxseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t_nxv4i64: 16016; CHECK: # %bb.0: # %entry 16017; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16018; CHECK-NEXT: vluxseg2ei64.v v12, (a0), v8, v0.t 16019; CHECK-NEXT: vmv1r.v v8, v13 16020; CHECK-NEXT: ret 16021entry: 16022 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16023 %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) 16024 ret <vscale x 4 x bfloat> %1 16025} 16026 16027 16028define <vscale x 8 x bfloat> @test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 16029; CHECK-LABEL: test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i8: 16030; CHECK: # %bb.0: # %entry 16031; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16032; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8 16033; CHECK-NEXT: vmv2r.v v8, v12 16034; CHECK-NEXT: ret 16035entry: 16036 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 16037 %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) 16038 ret <vscale x 8 x bfloat> %1 16039} 16040 16041define <vscale x 8 x bfloat> @test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16042; CHECK-LABEL: test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i8: 16043; CHECK: # %bb.0: # %entry 16044; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16045; CHECK-NEXT: vluxseg2ei8.v v10, (a0), v8, v0.t 16046; CHECK-NEXT: vmv2r.v v8, v12 16047; CHECK-NEXT: ret 16048entry: 16049 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16050 %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) 16051 ret <vscale x 8 x bfloat> %1 16052} 16053 16054 16055define <vscale x 8 x bfloat> @test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 16056; CHECK-LABEL: test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i16: 16057; CHECK: # %bb.0: # %entry 16058; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16059; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8 16060; CHECK-NEXT: vmv2r.v v8, v12 16061; CHECK-NEXT: ret 16062entry: 16063 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 16064 %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) 16065 ret <vscale x 8 x bfloat> %1 16066} 16067 16068define <vscale x 8 x bfloat> @test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16069; CHECK-LABEL: test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i16: 16070; CHECK: # %bb.0: # %entry 16071; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16072; CHECK-NEXT: vluxseg2ei16.v v10, (a0), v8, v0.t 16073; CHECK-NEXT: vmv2r.v v8, v12 16074; CHECK-NEXT: ret 16075entry: 16076 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16077 %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) 16078 ret <vscale x 8 x bfloat> %1 16079} 16080 16081 16082define <vscale x 8 x bfloat> @test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 16083; CHECK-LABEL: test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i32: 16084; CHECK: # %bb.0: # %entry 16085; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16086; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8 16087; CHECK-NEXT: vmv2r.v v8, v14 16088; CHECK-NEXT: ret 16089entry: 16090 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 16091 %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) 16092 ret <vscale x 8 x bfloat> %1 16093} 16094 16095define <vscale x 8 x bfloat> @test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16096; CHECK-LABEL: test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i32: 16097; CHECK: # %bb.0: # %entry 16098; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16099; CHECK-NEXT: vluxseg2ei32.v v12, (a0), v8, v0.t 16100; CHECK-NEXT: vmv2r.v v8, v14 16101; CHECK-NEXT: ret 16102entry: 16103 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16104 %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) 16105 ret <vscale x 8 x bfloat> %1 16106} 16107 16108 16109define <vscale x 8 x bfloat> @test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 16110; CHECK-LABEL: test_vluxseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i64: 16111; CHECK: # %bb.0: # %entry 16112; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16113; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8 16114; CHECK-NEXT: vmv2r.v v8, v18 16115; CHECK-NEXT: ret 16116entry: 16117 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv16i8_2t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 16118 %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) 16119 ret <vscale x 8 x bfloat> %1 16120} 16121 16122define <vscale x 8 x bfloat> @test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16123; CHECK-LABEL: test_vluxseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t_nxv8i64: 16124; CHECK: # %bb.0: # %entry 16125; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16126; CHECK-NEXT: vluxseg2ei64.v v16, (a0), v8, v0.t 16127; CHECK-NEXT: vmv2r.v v8, v18 16128; CHECK-NEXT: ret 16129entry: 16130 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16131 %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) 16132 ret <vscale x 8 x bfloat> %1 16133} 16134 16135 16136define <vscale x 16 x bfloat> @test_vluxseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl) { 16137; CHECK-LABEL: test_vluxseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i8: 16138; CHECK: # %bb.0: # %entry 16139; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 16140; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8 16141; CHECK-NEXT: vmv4r.v v8, v16 16142; CHECK-NEXT: ret 16143entry: 16144 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, i64 %vl, i64 4) 16145 %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) 16146 ret <vscale x 16 x bfloat> %1 16147} 16148 16149define <vscale x 16 x bfloat> @test_vluxseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i8(ptr %base, <vscale x 16 x i8> %index, i64 %vl, <vscale x 16 x i1> %mask) { 16150; CHECK-LABEL: test_vluxseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i8: 16151; CHECK: # %bb.0: # %entry 16152; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 16153; CHECK-NEXT: vluxseg2ei8.v v12, (a0), v8, v0.t 16154; CHECK-NEXT: vmv4r.v v8, v16 16155; CHECK-NEXT: ret 16156entry: 16157 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i8(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 16158 %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) 16159 ret <vscale x 16 x bfloat> %1 16160} 16161 16162 16163define <vscale x 16 x bfloat> @test_vluxseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl) { 16164; CHECK-LABEL: test_vluxseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i16: 16165; CHECK: # %bb.0: # %entry 16166; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 16167; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8 16168; CHECK-NEXT: vmv4r.v v8, v16 16169; CHECK-NEXT: ret 16170entry: 16171 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, i64 %vl, i64 4) 16172 %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) 16173 ret <vscale x 16 x bfloat> %1 16174} 16175 16176define <vscale x 16 x bfloat> @test_vluxseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i16(ptr %base, <vscale x 16 x i16> %index, i64 %vl, <vscale x 16 x i1> %mask) { 16177; CHECK-LABEL: test_vluxseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i16: 16178; CHECK: # %bb.0: # %entry 16179; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 16180; CHECK-NEXT: vluxseg2ei16.v v12, (a0), v8, v0.t 16181; CHECK-NEXT: vmv4r.v v8, v16 16182; CHECK-NEXT: ret 16183entry: 16184 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i16(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 16185 %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) 16186 ret <vscale x 16 x bfloat> %1 16187} 16188 16189 16190define <vscale x 16 x bfloat> @test_vluxseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl) { 16191; CHECK-LABEL: test_vluxseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i32: 16192; CHECK: # %bb.0: # %entry 16193; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 16194; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8 16195; CHECK-NEXT: vmv4r.v v8, v20 16196; CHECK-NEXT: ret 16197entry: 16198 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.triscv.vector.tuple_nxv32i8_2t.nxv16i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, i64 %vl, i64 4) 16199 %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) 16200 ret <vscale x 16 x bfloat> %1 16201} 16202 16203define <vscale x 16 x bfloat> @test_vluxseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i32(ptr %base, <vscale x 16 x i32> %index, i64 %vl, <vscale x 16 x i1> %mask) { 16204; CHECK-LABEL: test_vluxseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t_nxv16i32: 16205; CHECK: # %bb.0: # %entry 16206; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 16207; CHECK-NEXT: vluxseg2ei32.v v16, (a0), v8, v0.t 16208; CHECK-NEXT: vmv4r.v v8, v20 16209; CHECK-NEXT: ret 16210entry: 16211 %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vluxseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1.nxv16i32(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4) 16212 %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) 16213 ret <vscale x 16 x bfloat> %1 16214} 16215 16216 16217define <vscale x 1 x bfloat> @test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 16218; CHECK-LABEL: test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i8: 16219; CHECK: # %bb.0: # %entry 16220; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16221; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 16222; CHECK-NEXT: vmv1r.v v8, v10 16223; CHECK-NEXT: ret 16224entry: 16225 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 16226 %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) 16227 ret <vscale x 1 x bfloat> %1 16228} 16229 16230define <vscale x 1 x bfloat> @test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16231; CHECK-LABEL: test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i8: 16232; CHECK: # %bb.0: # %entry 16233; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16234; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 16235; CHECK-NEXT: vmv1r.v v8, v10 16236; CHECK-NEXT: ret 16237entry: 16238 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16239 %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) 16240 ret <vscale x 1 x bfloat> %1 16241} 16242 16243 16244define <vscale x 1 x bfloat> @test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 16245; CHECK-LABEL: test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i16: 16246; CHECK: # %bb.0: # %entry 16247; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16248; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 16249; CHECK-NEXT: vmv1r.v v8, v10 16250; CHECK-NEXT: ret 16251entry: 16252 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 16253 %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) 16254 ret <vscale x 1 x bfloat> %1 16255} 16256 16257define <vscale x 1 x bfloat> @test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16258; CHECK-LABEL: test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i16: 16259; CHECK: # %bb.0: # %entry 16260; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16261; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 16262; CHECK-NEXT: vmv1r.v v8, v10 16263; CHECK-NEXT: ret 16264entry: 16265 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16266 %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) 16267 ret <vscale x 1 x bfloat> %1 16268} 16269 16270 16271define <vscale x 1 x bfloat> @test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 16272; CHECK-LABEL: test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i32: 16273; CHECK: # %bb.0: # %entry 16274; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16275; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 16276; CHECK-NEXT: vmv1r.v v8, v10 16277; CHECK-NEXT: ret 16278entry: 16279 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 16280 %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) 16281 ret <vscale x 1 x bfloat> %1 16282} 16283 16284define <vscale x 1 x bfloat> @test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16285; CHECK-LABEL: test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i32: 16286; CHECK: # %bb.0: # %entry 16287; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16288; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 16289; CHECK-NEXT: vmv1r.v v8, v10 16290; CHECK-NEXT: ret 16291entry: 16292 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16293 %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) 16294 ret <vscale x 1 x bfloat> %1 16295} 16296 16297 16298define <vscale x 1 x bfloat> @test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 16299; CHECK-LABEL: test_vluxseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i64: 16300; CHECK: # %bb.0: # %entry 16301; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16302; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8 16303; CHECK-NEXT: vmv1r.v v8, v10 16304; CHECK-NEXT: ret 16305entry: 16306 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv2i8_3t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 16307 %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) 16308 ret <vscale x 1 x bfloat> %1 16309} 16310 16311define <vscale x 1 x bfloat> @test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16312; CHECK-LABEL: test_vluxseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t_nxv1i64: 16313; CHECK: # %bb.0: # %entry 16314; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16315; CHECK-NEXT: vluxseg3ei64.v v9, (a0), v8, v0.t 16316; CHECK-NEXT: vmv1r.v v8, v10 16317; CHECK-NEXT: ret 16318entry: 16319 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16320 %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) 16321 ret <vscale x 1 x bfloat> %1 16322} 16323 16324 16325define <vscale x 2 x bfloat> @test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 16326; CHECK-LABEL: test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i8: 16327; CHECK: # %bb.0: # %entry 16328; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16329; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 16330; CHECK-NEXT: vmv1r.v v8, v10 16331; CHECK-NEXT: ret 16332entry: 16333 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 16334 %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) 16335 ret <vscale x 2 x bfloat> %1 16336} 16337 16338define <vscale x 2 x bfloat> @test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16339; CHECK-LABEL: test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i8: 16340; CHECK: # %bb.0: # %entry 16341; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16342; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 16343; CHECK-NEXT: vmv1r.v v8, v10 16344; CHECK-NEXT: ret 16345entry: 16346 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16347 %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) 16348 ret <vscale x 2 x bfloat> %1 16349} 16350 16351 16352define <vscale x 2 x bfloat> @test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 16353; CHECK-LABEL: test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i16: 16354; CHECK: # %bb.0: # %entry 16355; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16356; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 16357; CHECK-NEXT: vmv1r.v v8, v10 16358; CHECK-NEXT: ret 16359entry: 16360 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 16361 %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) 16362 ret <vscale x 2 x bfloat> %1 16363} 16364 16365define <vscale x 2 x bfloat> @test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16366; CHECK-LABEL: test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i16: 16367; CHECK: # %bb.0: # %entry 16368; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16369; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 16370; CHECK-NEXT: vmv1r.v v8, v10 16371; CHECK-NEXT: ret 16372entry: 16373 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16374 %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) 16375 ret <vscale x 2 x bfloat> %1 16376} 16377 16378 16379define <vscale x 2 x bfloat> @test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 16380; CHECK-LABEL: test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i32: 16381; CHECK: # %bb.0: # %entry 16382; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16383; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8 16384; CHECK-NEXT: vmv1r.v v8, v10 16385; CHECK-NEXT: ret 16386entry: 16387 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 16388 %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) 16389 ret <vscale x 2 x bfloat> %1 16390} 16391 16392define <vscale x 2 x bfloat> @test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16393; CHECK-LABEL: test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i32: 16394; CHECK: # %bb.0: # %entry 16395; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16396; CHECK-NEXT: vluxseg3ei32.v v9, (a0), v8, v0.t 16397; CHECK-NEXT: vmv1r.v v8, v10 16398; CHECK-NEXT: ret 16399entry: 16400 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16401 %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) 16402 ret <vscale x 2 x bfloat> %1 16403} 16404 16405 16406define <vscale x 2 x bfloat> @test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 16407; CHECK-LABEL: test_vluxseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i64: 16408; CHECK: # %bb.0: # %entry 16409; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16410; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8 16411; CHECK-NEXT: vmv1r.v v8, v11 16412; CHECK-NEXT: ret 16413entry: 16414 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv4i8_3t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 16415 %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) 16416 ret <vscale x 2 x bfloat> %1 16417} 16418 16419define <vscale x 2 x bfloat> @test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16420; CHECK-LABEL: test_vluxseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t_nxv2i64: 16421; CHECK: # %bb.0: # %entry 16422; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16423; CHECK-NEXT: vluxseg3ei64.v v10, (a0), v8, v0.t 16424; CHECK-NEXT: vmv1r.v v8, v11 16425; CHECK-NEXT: ret 16426entry: 16427 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16428 %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) 16429 ret <vscale x 2 x bfloat> %1 16430} 16431 16432 16433define <vscale x 4 x bfloat> @test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 16434; CHECK-LABEL: test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i8: 16435; CHECK: # %bb.0: # %entry 16436; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16437; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8 16438; CHECK-NEXT: vmv1r.v v8, v10 16439; CHECK-NEXT: ret 16440entry: 16441 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 16442 %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) 16443 ret <vscale x 4 x bfloat> %1 16444} 16445 16446define <vscale x 4 x bfloat> @test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16447; CHECK-LABEL: test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i8: 16448; CHECK: # %bb.0: # %entry 16449; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16450; CHECK-NEXT: vluxseg3ei8.v v9, (a0), v8, v0.t 16451; CHECK-NEXT: vmv1r.v v8, v10 16452; CHECK-NEXT: ret 16453entry: 16454 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16455 %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) 16456 ret <vscale x 4 x bfloat> %1 16457} 16458 16459 16460define <vscale x 4 x bfloat> @test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 16461; CHECK-LABEL: test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i16: 16462; CHECK: # %bb.0: # %entry 16463; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16464; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8 16465; CHECK-NEXT: vmv1r.v v8, v10 16466; CHECK-NEXT: ret 16467entry: 16468 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 16469 %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) 16470 ret <vscale x 4 x bfloat> %1 16471} 16472 16473define <vscale x 4 x bfloat> @test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16474; CHECK-LABEL: test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i16: 16475; CHECK: # %bb.0: # %entry 16476; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16477; CHECK-NEXT: vluxseg3ei16.v v9, (a0), v8, v0.t 16478; CHECK-NEXT: vmv1r.v v8, v10 16479; CHECK-NEXT: ret 16480entry: 16481 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16482 %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) 16483 ret <vscale x 4 x bfloat> %1 16484} 16485 16486 16487define <vscale x 4 x bfloat> @test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 16488; CHECK-LABEL: test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i32: 16489; CHECK: # %bb.0: # %entry 16490; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16491; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8 16492; CHECK-NEXT: vmv1r.v v8, v11 16493; CHECK-NEXT: ret 16494entry: 16495 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 16496 %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) 16497 ret <vscale x 4 x bfloat> %1 16498} 16499 16500define <vscale x 4 x bfloat> @test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16501; CHECK-LABEL: test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i32: 16502; CHECK: # %bb.0: # %entry 16503; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16504; CHECK-NEXT: vluxseg3ei32.v v10, (a0), v8, v0.t 16505; CHECK-NEXT: vmv1r.v v8, v11 16506; CHECK-NEXT: ret 16507entry: 16508 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16509 %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) 16510 ret <vscale x 4 x bfloat> %1 16511} 16512 16513 16514define <vscale x 4 x bfloat> @test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 16515; CHECK-LABEL: test_vluxseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i64: 16516; CHECK: # %bb.0: # %entry 16517; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16518; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8 16519; CHECK-NEXT: vmv1r.v v8, v13 16520; CHECK-NEXT: ret 16521entry: 16522 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv8i8_3t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 16523 %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) 16524 ret <vscale x 4 x bfloat> %1 16525} 16526 16527define <vscale x 4 x bfloat> @test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16528; CHECK-LABEL: test_vluxseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t_nxv4i64: 16529; CHECK: # %bb.0: # %entry 16530; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16531; CHECK-NEXT: vluxseg3ei64.v v12, (a0), v8, v0.t 16532; CHECK-NEXT: vmv1r.v v8, v13 16533; CHECK-NEXT: ret 16534entry: 16535 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16536 %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) 16537 ret <vscale x 4 x bfloat> %1 16538} 16539 16540 16541define <vscale x 8 x bfloat> @test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 16542; CHECK-LABEL: test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i8: 16543; CHECK: # %bb.0: # %entry 16544; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16545; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8 16546; CHECK-NEXT: vmv2r.v v8, v12 16547; CHECK-NEXT: ret 16548entry: 16549 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 16550 %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) 16551 ret <vscale x 8 x bfloat> %1 16552} 16553 16554define <vscale x 8 x bfloat> @test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16555; CHECK-LABEL: test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i8: 16556; CHECK: # %bb.0: # %entry 16557; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16558; CHECK-NEXT: vluxseg3ei8.v v10, (a0), v8, v0.t 16559; CHECK-NEXT: vmv2r.v v8, v12 16560; CHECK-NEXT: ret 16561entry: 16562 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16563 %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) 16564 ret <vscale x 8 x bfloat> %1 16565} 16566 16567 16568define <vscale x 8 x bfloat> @test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 16569; CHECK-LABEL: test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i16: 16570; CHECK: # %bb.0: # %entry 16571; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16572; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8 16573; CHECK-NEXT: vmv2r.v v8, v12 16574; CHECK-NEXT: ret 16575entry: 16576 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 16577 %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) 16578 ret <vscale x 8 x bfloat> %1 16579} 16580 16581define <vscale x 8 x bfloat> @test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16582; CHECK-LABEL: test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i16: 16583; CHECK: # %bb.0: # %entry 16584; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16585; CHECK-NEXT: vluxseg3ei16.v v10, (a0), v8, v0.t 16586; CHECK-NEXT: vmv2r.v v8, v12 16587; CHECK-NEXT: ret 16588entry: 16589 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16590 %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) 16591 ret <vscale x 8 x bfloat> %1 16592} 16593 16594 16595define <vscale x 8 x bfloat> @test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 16596; CHECK-LABEL: test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i32: 16597; CHECK: # %bb.0: # %entry 16598; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16599; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8 16600; CHECK-NEXT: vmv2r.v v8, v14 16601; CHECK-NEXT: ret 16602entry: 16603 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 16604 %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) 16605 ret <vscale x 8 x bfloat> %1 16606} 16607 16608define <vscale x 8 x bfloat> @test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16609; CHECK-LABEL: test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i32: 16610; CHECK: # %bb.0: # %entry 16611; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16612; CHECK-NEXT: vluxseg3ei32.v v12, (a0), v8, v0.t 16613; CHECK-NEXT: vmv2r.v v8, v14 16614; CHECK-NEXT: ret 16615entry: 16616 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16617 %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) 16618 ret <vscale x 8 x bfloat> %1 16619} 16620 16621 16622define <vscale x 8 x bfloat> @test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 16623; CHECK-LABEL: test_vluxseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i64: 16624; CHECK: # %bb.0: # %entry 16625; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16626; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8 16627; CHECK-NEXT: vmv2r.v v8, v18 16628; CHECK-NEXT: ret 16629entry: 16630 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.triscv.vector.tuple_nxv16i8_3t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 16631 %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) 16632 ret <vscale x 8 x bfloat> %1 16633} 16634 16635define <vscale x 8 x bfloat> @test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16636; CHECK-LABEL: test_vluxseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t_nxv8i64: 16637; CHECK: # %bb.0: # %entry 16638; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16639; CHECK-NEXT: vluxseg3ei64.v v16, (a0), v8, v0.t 16640; CHECK-NEXT: vmv2r.v v8, v18 16641; CHECK-NEXT: ret 16642entry: 16643 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vluxseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16644 %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) 16645 ret <vscale x 8 x bfloat> %1 16646} 16647 16648 16649define <vscale x 1 x bfloat> @test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 16650; CHECK-LABEL: test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i8: 16651; CHECK: # %bb.0: # %entry 16652; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16653; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 16654; CHECK-NEXT: vmv1r.v v8, v10 16655; CHECK-NEXT: ret 16656entry: 16657 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 16658 %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) 16659 ret <vscale x 1 x bfloat> %1 16660} 16661 16662define <vscale x 1 x bfloat> @test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16663; CHECK-LABEL: test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i8: 16664; CHECK: # %bb.0: # %entry 16665; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16666; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 16667; CHECK-NEXT: vmv1r.v v8, v10 16668; CHECK-NEXT: ret 16669entry: 16670 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16671 %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) 16672 ret <vscale x 1 x bfloat> %1 16673} 16674 16675 16676define <vscale x 1 x bfloat> @test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 16677; CHECK-LABEL: test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i16: 16678; CHECK: # %bb.0: # %entry 16679; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16680; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 16681; CHECK-NEXT: vmv1r.v v8, v10 16682; CHECK-NEXT: ret 16683entry: 16684 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 16685 %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) 16686 ret <vscale x 1 x bfloat> %1 16687} 16688 16689define <vscale x 1 x bfloat> @test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16690; CHECK-LABEL: test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i16: 16691; CHECK: # %bb.0: # %entry 16692; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16693; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 16694; CHECK-NEXT: vmv1r.v v8, v10 16695; CHECK-NEXT: ret 16696entry: 16697 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16698 %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) 16699 ret <vscale x 1 x bfloat> %1 16700} 16701 16702 16703define <vscale x 1 x bfloat> @test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 16704; CHECK-LABEL: test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i32: 16705; CHECK: # %bb.0: # %entry 16706; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16707; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 16708; CHECK-NEXT: vmv1r.v v8, v10 16709; CHECK-NEXT: ret 16710entry: 16711 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 16712 %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) 16713 ret <vscale x 1 x bfloat> %1 16714} 16715 16716define <vscale x 1 x bfloat> @test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16717; CHECK-LABEL: test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i32: 16718; CHECK: # %bb.0: # %entry 16719; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16720; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 16721; CHECK-NEXT: vmv1r.v v8, v10 16722; CHECK-NEXT: ret 16723entry: 16724 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16725 %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) 16726 ret <vscale x 1 x bfloat> %1 16727} 16728 16729 16730define <vscale x 1 x bfloat> @test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 16731; CHECK-LABEL: test_vluxseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i64: 16732; CHECK: # %bb.0: # %entry 16733; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16734; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8 16735; CHECK-NEXT: vmv1r.v v8, v10 16736; CHECK-NEXT: ret 16737entry: 16738 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv2i8_4t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 16739 %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) 16740 ret <vscale x 1 x bfloat> %1 16741} 16742 16743define <vscale x 1 x bfloat> @test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 16744; CHECK-LABEL: test_vluxseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t_nxv1i64: 16745; CHECK: # %bb.0: # %entry 16746; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 16747; CHECK-NEXT: vluxseg4ei64.v v9, (a0), v8, v0.t 16748; CHECK-NEXT: vmv1r.v v8, v10 16749; CHECK-NEXT: ret 16750entry: 16751 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 16752 %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) 16753 ret <vscale x 1 x bfloat> %1 16754} 16755 16756 16757define <vscale x 2 x bfloat> @test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 16758; CHECK-LABEL: test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i8: 16759; CHECK: # %bb.0: # %entry 16760; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16761; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 16762; CHECK-NEXT: vmv1r.v v8, v10 16763; CHECK-NEXT: ret 16764entry: 16765 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 16766 %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) 16767 ret <vscale x 2 x bfloat> %1 16768} 16769 16770define <vscale x 2 x bfloat> @test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16771; CHECK-LABEL: test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i8: 16772; CHECK: # %bb.0: # %entry 16773; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16774; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 16775; CHECK-NEXT: vmv1r.v v8, v10 16776; CHECK-NEXT: ret 16777entry: 16778 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16779 %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) 16780 ret <vscale x 2 x bfloat> %1 16781} 16782 16783 16784define <vscale x 2 x bfloat> @test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 16785; CHECK-LABEL: test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i16: 16786; CHECK: # %bb.0: # %entry 16787; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16788; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 16789; CHECK-NEXT: vmv1r.v v8, v10 16790; CHECK-NEXT: ret 16791entry: 16792 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 16793 %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) 16794 ret <vscale x 2 x bfloat> %1 16795} 16796 16797define <vscale x 2 x bfloat> @test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16798; CHECK-LABEL: test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i16: 16799; CHECK: # %bb.0: # %entry 16800; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16801; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 16802; CHECK-NEXT: vmv1r.v v8, v10 16803; CHECK-NEXT: ret 16804entry: 16805 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16806 %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) 16807 ret <vscale x 2 x bfloat> %1 16808} 16809 16810 16811define <vscale x 2 x bfloat> @test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 16812; CHECK-LABEL: test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i32: 16813; CHECK: # %bb.0: # %entry 16814; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16815; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8 16816; CHECK-NEXT: vmv1r.v v8, v10 16817; CHECK-NEXT: ret 16818entry: 16819 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 16820 %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) 16821 ret <vscale x 2 x bfloat> %1 16822} 16823 16824define <vscale x 2 x bfloat> @test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16825; CHECK-LABEL: test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i32: 16826; CHECK: # %bb.0: # %entry 16827; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16828; CHECK-NEXT: vluxseg4ei32.v v9, (a0), v8, v0.t 16829; CHECK-NEXT: vmv1r.v v8, v10 16830; CHECK-NEXT: ret 16831entry: 16832 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16833 %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) 16834 ret <vscale x 2 x bfloat> %1 16835} 16836 16837 16838define <vscale x 2 x bfloat> @test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 16839; CHECK-LABEL: test_vluxseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i64: 16840; CHECK: # %bb.0: # %entry 16841; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16842; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8 16843; CHECK-NEXT: vmv1r.v v8, v11 16844; CHECK-NEXT: ret 16845entry: 16846 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv4i8_4t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 16847 %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) 16848 ret <vscale x 2 x bfloat> %1 16849} 16850 16851define <vscale x 2 x bfloat> @test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 16852; CHECK-LABEL: test_vluxseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t_nxv2i64: 16853; CHECK: # %bb.0: # %entry 16854; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 16855; CHECK-NEXT: vluxseg4ei64.v v10, (a0), v8, v0.t 16856; CHECK-NEXT: vmv1r.v v8, v11 16857; CHECK-NEXT: ret 16858entry: 16859 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 16860 %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) 16861 ret <vscale x 2 x bfloat> %1 16862} 16863 16864 16865define <vscale x 4 x bfloat> @test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 16866; CHECK-LABEL: test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i8: 16867; CHECK: # %bb.0: # %entry 16868; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16869; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8 16870; CHECK-NEXT: vmv1r.v v8, v10 16871; CHECK-NEXT: ret 16872entry: 16873 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 16874 %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) 16875 ret <vscale x 4 x bfloat> %1 16876} 16877 16878define <vscale x 4 x bfloat> @test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16879; CHECK-LABEL: test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i8: 16880; CHECK: # %bb.0: # %entry 16881; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16882; CHECK-NEXT: vluxseg4ei8.v v9, (a0), v8, v0.t 16883; CHECK-NEXT: vmv1r.v v8, v10 16884; CHECK-NEXT: ret 16885entry: 16886 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16887 %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) 16888 ret <vscale x 4 x bfloat> %1 16889} 16890 16891 16892define <vscale x 4 x bfloat> @test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 16893; CHECK-LABEL: test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i16: 16894; CHECK: # %bb.0: # %entry 16895; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16896; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8 16897; CHECK-NEXT: vmv1r.v v8, v10 16898; CHECK-NEXT: ret 16899entry: 16900 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 16901 %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) 16902 ret <vscale x 4 x bfloat> %1 16903} 16904 16905define <vscale x 4 x bfloat> @test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16906; CHECK-LABEL: test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i16: 16907; CHECK: # %bb.0: # %entry 16908; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16909; CHECK-NEXT: vluxseg4ei16.v v9, (a0), v8, v0.t 16910; CHECK-NEXT: vmv1r.v v8, v10 16911; CHECK-NEXT: ret 16912entry: 16913 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16914 %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) 16915 ret <vscale x 4 x bfloat> %1 16916} 16917 16918 16919define <vscale x 4 x bfloat> @test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 16920; CHECK-LABEL: test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i32: 16921; CHECK: # %bb.0: # %entry 16922; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16923; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8 16924; CHECK-NEXT: vmv1r.v v8, v11 16925; CHECK-NEXT: ret 16926entry: 16927 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 16928 %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) 16929 ret <vscale x 4 x bfloat> %1 16930} 16931 16932define <vscale x 4 x bfloat> @test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16933; CHECK-LABEL: test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i32: 16934; CHECK: # %bb.0: # %entry 16935; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16936; CHECK-NEXT: vluxseg4ei32.v v10, (a0), v8, v0.t 16937; CHECK-NEXT: vmv1r.v v8, v11 16938; CHECK-NEXT: ret 16939entry: 16940 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16941 %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) 16942 ret <vscale x 4 x bfloat> %1 16943} 16944 16945 16946define <vscale x 4 x bfloat> @test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 16947; CHECK-LABEL: test_vluxseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i64: 16948; CHECK: # %bb.0: # %entry 16949; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16950; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8 16951; CHECK-NEXT: vmv1r.v v8, v13 16952; CHECK-NEXT: ret 16953entry: 16954 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv8i8_4t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 16955 %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) 16956 ret <vscale x 4 x bfloat> %1 16957} 16958 16959define <vscale x 4 x bfloat> @test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 16960; CHECK-LABEL: test_vluxseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t_nxv4i64: 16961; CHECK: # %bb.0: # %entry 16962; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 16963; CHECK-NEXT: vluxseg4ei64.v v12, (a0), v8, v0.t 16964; CHECK-NEXT: vmv1r.v v8, v13 16965; CHECK-NEXT: ret 16966entry: 16967 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 16968 %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) 16969 ret <vscale x 4 x bfloat> %1 16970} 16971 16972 16973define <vscale x 8 x bfloat> @test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl) { 16974; CHECK-LABEL: test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i8: 16975; CHECK: # %bb.0: # %entry 16976; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16977; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8 16978; CHECK-NEXT: vmv2r.v v8, v12 16979; CHECK-NEXT: ret 16980entry: 16981 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, i64 %vl, i64 4) 16982 %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) 16983 ret <vscale x 8 x bfloat> %1 16984} 16985 16986define <vscale x 8 x bfloat> @test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i8(ptr %base, <vscale x 8 x i8> %index, i64 %vl, <vscale x 8 x i1> %mask) { 16987; CHECK-LABEL: test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i8: 16988; CHECK: # %bb.0: # %entry 16989; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 16990; CHECK-NEXT: vluxseg4ei8.v v10, (a0), v8, v0.t 16991; CHECK-NEXT: vmv2r.v v8, v12 16992; CHECK-NEXT: ret 16993entry: 16994 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i8(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 16995 %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) 16996 ret <vscale x 8 x bfloat> %1 16997} 16998 16999 17000define <vscale x 8 x bfloat> @test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl) { 17001; CHECK-LABEL: test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i16: 17002; CHECK: # %bb.0: # %entry 17003; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 17004; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8 17005; CHECK-NEXT: vmv2r.v v8, v12 17006; CHECK-NEXT: ret 17007entry: 17008 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, i64 %vl, i64 4) 17009 %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) 17010 ret <vscale x 8 x bfloat> %1 17011} 17012 17013define <vscale x 8 x bfloat> @test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i16(ptr %base, <vscale x 8 x i16> %index, i64 %vl, <vscale x 8 x i1> %mask) { 17014; CHECK-LABEL: test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i16: 17015; CHECK: # %bb.0: # %entry 17016; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 17017; CHECK-NEXT: vluxseg4ei16.v v10, (a0), v8, v0.t 17018; CHECK-NEXT: vmv2r.v v8, v12 17019; CHECK-NEXT: ret 17020entry: 17021 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i16(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 17022 %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) 17023 ret <vscale x 8 x bfloat> %1 17024} 17025 17026 17027define <vscale x 8 x bfloat> @test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl) { 17028; CHECK-LABEL: test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i32: 17029; CHECK: # %bb.0: # %entry 17030; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 17031; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8 17032; CHECK-NEXT: vmv2r.v v8, v14 17033; CHECK-NEXT: ret 17034entry: 17035 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, i64 %vl, i64 4) 17036 %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) 17037 ret <vscale x 8 x bfloat> %1 17038} 17039 17040define <vscale x 8 x bfloat> @test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i32(ptr %base, <vscale x 8 x i32> %index, i64 %vl, <vscale x 8 x i1> %mask) { 17041; CHECK-LABEL: test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i32: 17042; CHECK: # %bb.0: # %entry 17043; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 17044; CHECK-NEXT: vluxseg4ei32.v v12, (a0), v8, v0.t 17045; CHECK-NEXT: vmv2r.v v8, v14 17046; CHECK-NEXT: ret 17047entry: 17048 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i32(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 17049 %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) 17050 ret <vscale x 8 x bfloat> %1 17051} 17052 17053 17054define <vscale x 8 x bfloat> @test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl) { 17055; CHECK-LABEL: test_vluxseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i64: 17056; CHECK: # %bb.0: # %entry 17057; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 17058; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8 17059; CHECK-NEXT: vmv2r.v v8, v18 17060; CHECK-NEXT: ret 17061entry: 17062 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.triscv.vector.tuple_nxv16i8_4t.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, i64 %vl, i64 4) 17063 %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) 17064 ret <vscale x 8 x bfloat> %1 17065} 17066 17067define <vscale x 8 x bfloat> @test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i64(ptr %base, <vscale x 8 x i64> %index, i64 %vl, <vscale x 8 x i1> %mask) { 17068; CHECK-LABEL: test_vluxseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t_nxv8i64: 17069; CHECK: # %bb.0: # %entry 17070; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 17071; CHECK-NEXT: vluxseg4ei64.v v16, (a0), v8, v0.t 17072; CHECK-NEXT: vmv2r.v v8, v18 17073; CHECK-NEXT: ret 17074entry: 17075 %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vluxseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1.nxv8i64(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, <vscale x 8 x i64> %index, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4) 17076 %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) 17077 ret <vscale x 8 x bfloat> %1 17078} 17079 17080 17081define <vscale x 1 x bfloat> @test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 17082; CHECK-LABEL: test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i8: 17083; CHECK: # %bb.0: # %entry 17084; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17085; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 17086; CHECK-NEXT: vmv1r.v v8, v10 17087; CHECK-NEXT: ret 17088entry: 17089 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 17090 %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) 17091 ret <vscale x 1 x bfloat> %1 17092} 17093 17094define <vscale x 1 x bfloat> @test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17095; CHECK-LABEL: test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i8: 17096; CHECK: # %bb.0: # %entry 17097; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17098; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 17099; CHECK-NEXT: vmv1r.v v8, v10 17100; CHECK-NEXT: ret 17101entry: 17102 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17103 %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) 17104 ret <vscale x 1 x bfloat> %1 17105} 17106 17107 17108define <vscale x 1 x bfloat> @test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 17109; CHECK-LABEL: test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i16: 17110; CHECK: # %bb.0: # %entry 17111; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17112; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 17113; CHECK-NEXT: vmv1r.v v8, v10 17114; CHECK-NEXT: ret 17115entry: 17116 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 17117 %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) 17118 ret <vscale x 1 x bfloat> %1 17119} 17120 17121define <vscale x 1 x bfloat> @test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17122; CHECK-LABEL: test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i16: 17123; CHECK: # %bb.0: # %entry 17124; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17125; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 17126; CHECK-NEXT: vmv1r.v v8, v10 17127; CHECK-NEXT: ret 17128entry: 17129 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17130 %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) 17131 ret <vscale x 1 x bfloat> %1 17132} 17133 17134 17135define <vscale x 1 x bfloat> @test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 17136; CHECK-LABEL: test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i32: 17137; CHECK: # %bb.0: # %entry 17138; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17139; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 17140; CHECK-NEXT: vmv1r.v v8, v10 17141; CHECK-NEXT: ret 17142entry: 17143 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 17144 %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) 17145 ret <vscale x 1 x bfloat> %1 17146} 17147 17148define <vscale x 1 x bfloat> @test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17149; CHECK-LABEL: test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i32: 17150; CHECK: # %bb.0: # %entry 17151; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17152; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 17153; CHECK-NEXT: vmv1r.v v8, v10 17154; CHECK-NEXT: ret 17155entry: 17156 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17157 %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) 17158 ret <vscale x 1 x bfloat> %1 17159} 17160 17161 17162define <vscale x 1 x bfloat> @test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 17163; CHECK-LABEL: test_vluxseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i64: 17164; CHECK: # %bb.0: # %entry 17165; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17166; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8 17167; CHECK-NEXT: vmv1r.v v8, v10 17168; CHECK-NEXT: ret 17169entry: 17170 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv2i8_5t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 17171 %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) 17172 ret <vscale x 1 x bfloat> %1 17173} 17174 17175define <vscale x 1 x bfloat> @test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17176; CHECK-LABEL: test_vluxseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t_nxv1i64: 17177; CHECK: # %bb.0: # %entry 17178; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17179; CHECK-NEXT: vluxseg5ei64.v v9, (a0), v8, v0.t 17180; CHECK-NEXT: vmv1r.v v8, v10 17181; CHECK-NEXT: ret 17182entry: 17183 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17184 %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) 17185 ret <vscale x 1 x bfloat> %1 17186} 17187 17188 17189define <vscale x 2 x bfloat> @test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 17190; CHECK-LABEL: test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i8: 17191; CHECK: # %bb.0: # %entry 17192; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17193; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 17194; CHECK-NEXT: vmv1r.v v8, v10 17195; CHECK-NEXT: ret 17196entry: 17197 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 17198 %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) 17199 ret <vscale x 2 x bfloat> %1 17200} 17201 17202define <vscale x 2 x bfloat> @test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17203; CHECK-LABEL: test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i8: 17204; CHECK: # %bb.0: # %entry 17205; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17206; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 17207; CHECK-NEXT: vmv1r.v v8, v10 17208; CHECK-NEXT: ret 17209entry: 17210 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17211 %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) 17212 ret <vscale x 2 x bfloat> %1 17213} 17214 17215 17216define <vscale x 2 x bfloat> @test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 17217; CHECK-LABEL: test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i16: 17218; CHECK: # %bb.0: # %entry 17219; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17220; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 17221; CHECK-NEXT: vmv1r.v v8, v10 17222; CHECK-NEXT: ret 17223entry: 17224 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 17225 %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) 17226 ret <vscale x 2 x bfloat> %1 17227} 17228 17229define <vscale x 2 x bfloat> @test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17230; CHECK-LABEL: test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i16: 17231; CHECK: # %bb.0: # %entry 17232; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17233; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 17234; CHECK-NEXT: vmv1r.v v8, v10 17235; CHECK-NEXT: ret 17236entry: 17237 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17238 %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) 17239 ret <vscale x 2 x bfloat> %1 17240} 17241 17242 17243define <vscale x 2 x bfloat> @test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 17244; CHECK-LABEL: test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i32: 17245; CHECK: # %bb.0: # %entry 17246; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17247; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8 17248; CHECK-NEXT: vmv1r.v v8, v10 17249; CHECK-NEXT: ret 17250entry: 17251 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 17252 %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) 17253 ret <vscale x 2 x bfloat> %1 17254} 17255 17256define <vscale x 2 x bfloat> @test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17257; CHECK-LABEL: test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i32: 17258; CHECK: # %bb.0: # %entry 17259; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17260; CHECK-NEXT: vluxseg5ei32.v v9, (a0), v8, v0.t 17261; CHECK-NEXT: vmv1r.v v8, v10 17262; CHECK-NEXT: ret 17263entry: 17264 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17265 %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) 17266 ret <vscale x 2 x bfloat> %1 17267} 17268 17269 17270define <vscale x 2 x bfloat> @test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 17271; CHECK-LABEL: test_vluxseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i64: 17272; CHECK: # %bb.0: # %entry 17273; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17274; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8 17275; CHECK-NEXT: vmv1r.v v8, v11 17276; CHECK-NEXT: ret 17277entry: 17278 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv4i8_5t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 17279 %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) 17280 ret <vscale x 2 x bfloat> %1 17281} 17282 17283define <vscale x 2 x bfloat> @test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17284; CHECK-LABEL: test_vluxseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t_nxv2i64: 17285; CHECK: # %bb.0: # %entry 17286; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17287; CHECK-NEXT: vluxseg5ei64.v v10, (a0), v8, v0.t 17288; CHECK-NEXT: vmv1r.v v8, v11 17289; CHECK-NEXT: ret 17290entry: 17291 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17292 %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) 17293 ret <vscale x 2 x bfloat> %1 17294} 17295 17296 17297define <vscale x 4 x bfloat> @test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 17298; CHECK-LABEL: test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i8: 17299; CHECK: # %bb.0: # %entry 17300; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17301; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8 17302; CHECK-NEXT: vmv1r.v v8, v10 17303; CHECK-NEXT: ret 17304entry: 17305 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 17306 %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) 17307 ret <vscale x 4 x bfloat> %1 17308} 17309 17310define <vscale x 4 x bfloat> @test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17311; CHECK-LABEL: test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i8: 17312; CHECK: # %bb.0: # %entry 17313; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17314; CHECK-NEXT: vluxseg5ei8.v v9, (a0), v8, v0.t 17315; CHECK-NEXT: vmv1r.v v8, v10 17316; CHECK-NEXT: ret 17317entry: 17318 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17319 %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) 17320 ret <vscale x 4 x bfloat> %1 17321} 17322 17323 17324define <vscale x 4 x bfloat> @test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 17325; CHECK-LABEL: test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i16: 17326; CHECK: # %bb.0: # %entry 17327; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17328; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8 17329; CHECK-NEXT: vmv1r.v v8, v10 17330; CHECK-NEXT: ret 17331entry: 17332 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 17333 %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) 17334 ret <vscale x 4 x bfloat> %1 17335} 17336 17337define <vscale x 4 x bfloat> @test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17338; CHECK-LABEL: test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i16: 17339; CHECK: # %bb.0: # %entry 17340; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17341; CHECK-NEXT: vluxseg5ei16.v v9, (a0), v8, v0.t 17342; CHECK-NEXT: vmv1r.v v8, v10 17343; CHECK-NEXT: ret 17344entry: 17345 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17346 %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) 17347 ret <vscale x 4 x bfloat> %1 17348} 17349 17350 17351define <vscale x 4 x bfloat> @test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 17352; CHECK-LABEL: test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i32: 17353; CHECK: # %bb.0: # %entry 17354; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17355; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8 17356; CHECK-NEXT: vmv1r.v v8, v11 17357; CHECK-NEXT: ret 17358entry: 17359 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 17360 %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) 17361 ret <vscale x 4 x bfloat> %1 17362} 17363 17364define <vscale x 4 x bfloat> @test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17365; CHECK-LABEL: test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i32: 17366; CHECK: # %bb.0: # %entry 17367; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17368; CHECK-NEXT: vluxseg5ei32.v v10, (a0), v8, v0.t 17369; CHECK-NEXT: vmv1r.v v8, v11 17370; CHECK-NEXT: ret 17371entry: 17372 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17373 %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) 17374 ret <vscale x 4 x bfloat> %1 17375} 17376 17377 17378define <vscale x 4 x bfloat> @test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 17379; CHECK-LABEL: test_vluxseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i64: 17380; CHECK: # %bb.0: # %entry 17381; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17382; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8 17383; CHECK-NEXT: vmv1r.v v8, v13 17384; CHECK-NEXT: ret 17385entry: 17386 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.triscv.vector.tuple_nxv8i8_5t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 17387 %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) 17388 ret <vscale x 4 x bfloat> %1 17389} 17390 17391define <vscale x 4 x bfloat> @test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17392; CHECK-LABEL: test_vluxseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t_nxv4i64: 17393; CHECK: # %bb.0: # %entry 17394; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17395; CHECK-NEXT: vluxseg5ei64.v v12, (a0), v8, v0.t 17396; CHECK-NEXT: vmv1r.v v8, v13 17397; CHECK-NEXT: ret 17398entry: 17399 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vluxseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17400 %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) 17401 ret <vscale x 4 x bfloat> %1 17402} 17403 17404 17405define <vscale x 1 x bfloat> @test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 17406; CHECK-LABEL: test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i8: 17407; CHECK: # %bb.0: # %entry 17408; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17409; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 17410; CHECK-NEXT: vmv1r.v v8, v10 17411; CHECK-NEXT: ret 17412entry: 17413 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 17414 %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) 17415 ret <vscale x 1 x bfloat> %1 17416} 17417 17418define <vscale x 1 x bfloat> @test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17419; CHECK-LABEL: test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i8: 17420; CHECK: # %bb.0: # %entry 17421; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17422; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 17423; CHECK-NEXT: vmv1r.v v8, v10 17424; CHECK-NEXT: ret 17425entry: 17426 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17427 %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) 17428 ret <vscale x 1 x bfloat> %1 17429} 17430 17431 17432define <vscale x 1 x bfloat> @test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 17433; CHECK-LABEL: test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i16: 17434; CHECK: # %bb.0: # %entry 17435; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17436; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 17437; CHECK-NEXT: vmv1r.v v8, v10 17438; CHECK-NEXT: ret 17439entry: 17440 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 17441 %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) 17442 ret <vscale x 1 x bfloat> %1 17443} 17444 17445define <vscale x 1 x bfloat> @test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17446; CHECK-LABEL: test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i16: 17447; CHECK: # %bb.0: # %entry 17448; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17449; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 17450; CHECK-NEXT: vmv1r.v v8, v10 17451; CHECK-NEXT: ret 17452entry: 17453 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17454 %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) 17455 ret <vscale x 1 x bfloat> %1 17456} 17457 17458 17459define <vscale x 1 x bfloat> @test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 17460; CHECK-LABEL: test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i32: 17461; CHECK: # %bb.0: # %entry 17462; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17463; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 17464; CHECK-NEXT: vmv1r.v v8, v10 17465; CHECK-NEXT: ret 17466entry: 17467 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 17468 %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) 17469 ret <vscale x 1 x bfloat> %1 17470} 17471 17472define <vscale x 1 x bfloat> @test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17473; CHECK-LABEL: test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i32: 17474; CHECK: # %bb.0: # %entry 17475; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17476; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 17477; CHECK-NEXT: vmv1r.v v8, v10 17478; CHECK-NEXT: ret 17479entry: 17480 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17481 %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) 17482 ret <vscale x 1 x bfloat> %1 17483} 17484 17485 17486define <vscale x 1 x bfloat> @test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 17487; CHECK-LABEL: test_vluxseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i64: 17488; CHECK: # %bb.0: # %entry 17489; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17490; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8 17491; CHECK-NEXT: vmv1r.v v8, v10 17492; CHECK-NEXT: ret 17493entry: 17494 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv2i8_6t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 17495 %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) 17496 ret <vscale x 1 x bfloat> %1 17497} 17498 17499define <vscale x 1 x bfloat> @test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17500; CHECK-LABEL: test_vluxseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t_nxv1i64: 17501; CHECK: # %bb.0: # %entry 17502; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17503; CHECK-NEXT: vluxseg6ei64.v v9, (a0), v8, v0.t 17504; CHECK-NEXT: vmv1r.v v8, v10 17505; CHECK-NEXT: ret 17506entry: 17507 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17508 %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) 17509 ret <vscale x 1 x bfloat> %1 17510} 17511 17512 17513define <vscale x 2 x bfloat> @test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 17514; CHECK-LABEL: test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i8: 17515; CHECK: # %bb.0: # %entry 17516; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17517; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 17518; CHECK-NEXT: vmv1r.v v8, v10 17519; CHECK-NEXT: ret 17520entry: 17521 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 17522 %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) 17523 ret <vscale x 2 x bfloat> %1 17524} 17525 17526define <vscale x 2 x bfloat> @test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17527; CHECK-LABEL: test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i8: 17528; CHECK: # %bb.0: # %entry 17529; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17530; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 17531; CHECK-NEXT: vmv1r.v v8, v10 17532; CHECK-NEXT: ret 17533entry: 17534 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17535 %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) 17536 ret <vscale x 2 x bfloat> %1 17537} 17538 17539 17540define <vscale x 2 x bfloat> @test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 17541; CHECK-LABEL: test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i16: 17542; CHECK: # %bb.0: # %entry 17543; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17544; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 17545; CHECK-NEXT: vmv1r.v v8, v10 17546; CHECK-NEXT: ret 17547entry: 17548 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 17549 %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) 17550 ret <vscale x 2 x bfloat> %1 17551} 17552 17553define <vscale x 2 x bfloat> @test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17554; CHECK-LABEL: test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i16: 17555; CHECK: # %bb.0: # %entry 17556; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17557; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 17558; CHECK-NEXT: vmv1r.v v8, v10 17559; CHECK-NEXT: ret 17560entry: 17561 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17562 %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) 17563 ret <vscale x 2 x bfloat> %1 17564} 17565 17566 17567define <vscale x 2 x bfloat> @test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 17568; CHECK-LABEL: test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i32: 17569; CHECK: # %bb.0: # %entry 17570; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17571; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8 17572; CHECK-NEXT: vmv1r.v v8, v10 17573; CHECK-NEXT: ret 17574entry: 17575 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 17576 %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) 17577 ret <vscale x 2 x bfloat> %1 17578} 17579 17580define <vscale x 2 x bfloat> @test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17581; CHECK-LABEL: test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i32: 17582; CHECK: # %bb.0: # %entry 17583; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17584; CHECK-NEXT: vluxseg6ei32.v v9, (a0), v8, v0.t 17585; CHECK-NEXT: vmv1r.v v8, v10 17586; CHECK-NEXT: ret 17587entry: 17588 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17589 %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) 17590 ret <vscale x 2 x bfloat> %1 17591} 17592 17593 17594define <vscale x 2 x bfloat> @test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 17595; CHECK-LABEL: test_vluxseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i64: 17596; CHECK: # %bb.0: # %entry 17597; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17598; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8 17599; CHECK-NEXT: vmv1r.v v8, v11 17600; CHECK-NEXT: ret 17601entry: 17602 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv4i8_6t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 17603 %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) 17604 ret <vscale x 2 x bfloat> %1 17605} 17606 17607define <vscale x 2 x bfloat> @test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17608; CHECK-LABEL: test_vluxseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t_nxv2i64: 17609; CHECK: # %bb.0: # %entry 17610; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17611; CHECK-NEXT: vluxseg6ei64.v v10, (a0), v8, v0.t 17612; CHECK-NEXT: vmv1r.v v8, v11 17613; CHECK-NEXT: ret 17614entry: 17615 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17616 %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) 17617 ret <vscale x 2 x bfloat> %1 17618} 17619 17620 17621define <vscale x 4 x bfloat> @test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 17622; CHECK-LABEL: test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i8: 17623; CHECK: # %bb.0: # %entry 17624; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17625; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8 17626; CHECK-NEXT: vmv1r.v v8, v10 17627; CHECK-NEXT: ret 17628entry: 17629 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 17630 %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) 17631 ret <vscale x 4 x bfloat> %1 17632} 17633 17634define <vscale x 4 x bfloat> @test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17635; CHECK-LABEL: test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i8: 17636; CHECK: # %bb.0: # %entry 17637; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17638; CHECK-NEXT: vluxseg6ei8.v v9, (a0), v8, v0.t 17639; CHECK-NEXT: vmv1r.v v8, v10 17640; CHECK-NEXT: ret 17641entry: 17642 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17643 %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) 17644 ret <vscale x 4 x bfloat> %1 17645} 17646 17647 17648define <vscale x 4 x bfloat> @test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 17649; CHECK-LABEL: test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i16: 17650; CHECK: # %bb.0: # %entry 17651; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17652; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8 17653; CHECK-NEXT: vmv1r.v v8, v10 17654; CHECK-NEXT: ret 17655entry: 17656 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 17657 %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) 17658 ret <vscale x 4 x bfloat> %1 17659} 17660 17661define <vscale x 4 x bfloat> @test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17662; CHECK-LABEL: test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i16: 17663; CHECK: # %bb.0: # %entry 17664; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17665; CHECK-NEXT: vluxseg6ei16.v v9, (a0), v8, v0.t 17666; CHECK-NEXT: vmv1r.v v8, v10 17667; CHECK-NEXT: ret 17668entry: 17669 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17670 %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) 17671 ret <vscale x 4 x bfloat> %1 17672} 17673 17674 17675define <vscale x 4 x bfloat> @test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 17676; CHECK-LABEL: test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i32: 17677; CHECK: # %bb.0: # %entry 17678; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17679; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8 17680; CHECK-NEXT: vmv1r.v v8, v11 17681; CHECK-NEXT: ret 17682entry: 17683 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 17684 %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) 17685 ret <vscale x 4 x bfloat> %1 17686} 17687 17688define <vscale x 4 x bfloat> @test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17689; CHECK-LABEL: test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i32: 17690; CHECK: # %bb.0: # %entry 17691; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17692; CHECK-NEXT: vluxseg6ei32.v v10, (a0), v8, v0.t 17693; CHECK-NEXT: vmv1r.v v8, v11 17694; CHECK-NEXT: ret 17695entry: 17696 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17697 %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) 17698 ret <vscale x 4 x bfloat> %1 17699} 17700 17701 17702define <vscale x 4 x bfloat> @test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 17703; CHECK-LABEL: test_vluxseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i64: 17704; CHECK: # %bb.0: # %entry 17705; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17706; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8 17707; CHECK-NEXT: vmv1r.v v8, v13 17708; CHECK-NEXT: ret 17709entry: 17710 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.triscv.vector.tuple_nxv8i8_6t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 17711 %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) 17712 ret <vscale x 4 x bfloat> %1 17713} 17714 17715define <vscale x 4 x bfloat> @test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17716; CHECK-LABEL: test_vluxseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t_nxv4i64: 17717; CHECK: # %bb.0: # %entry 17718; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17719; CHECK-NEXT: vluxseg6ei64.v v12, (a0), v8, v0.t 17720; CHECK-NEXT: vmv1r.v v8, v13 17721; CHECK-NEXT: ret 17722entry: 17723 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vluxseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17724 %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) 17725 ret <vscale x 4 x bfloat> %1 17726} 17727 17728 17729define <vscale x 1 x bfloat> @test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 17730; CHECK-LABEL: test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i8: 17731; CHECK: # %bb.0: # %entry 17732; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17733; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 17734; CHECK-NEXT: vmv1r.v v8, v10 17735; CHECK-NEXT: ret 17736entry: 17737 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 17738 %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) 17739 ret <vscale x 1 x bfloat> %1 17740} 17741 17742define <vscale x 1 x bfloat> @test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17743; CHECK-LABEL: test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i8: 17744; CHECK: # %bb.0: # %entry 17745; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17746; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 17747; CHECK-NEXT: vmv1r.v v8, v10 17748; CHECK-NEXT: ret 17749entry: 17750 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17751 %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) 17752 ret <vscale x 1 x bfloat> %1 17753} 17754 17755 17756define <vscale x 1 x bfloat> @test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 17757; CHECK-LABEL: test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i16: 17758; CHECK: # %bb.0: # %entry 17759; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17760; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 17761; CHECK-NEXT: vmv1r.v v8, v10 17762; CHECK-NEXT: ret 17763entry: 17764 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 17765 %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) 17766 ret <vscale x 1 x bfloat> %1 17767} 17768 17769define <vscale x 1 x bfloat> @test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17770; CHECK-LABEL: test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i16: 17771; CHECK: # %bb.0: # %entry 17772; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17773; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 17774; CHECK-NEXT: vmv1r.v v8, v10 17775; CHECK-NEXT: ret 17776entry: 17777 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17778 %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) 17779 ret <vscale x 1 x bfloat> %1 17780} 17781 17782 17783define <vscale x 1 x bfloat> @test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 17784; CHECK-LABEL: test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i32: 17785; CHECK: # %bb.0: # %entry 17786; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17787; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 17788; CHECK-NEXT: vmv1r.v v8, v10 17789; CHECK-NEXT: ret 17790entry: 17791 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 17792 %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) 17793 ret <vscale x 1 x bfloat> %1 17794} 17795 17796define <vscale x 1 x bfloat> @test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17797; CHECK-LABEL: test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i32: 17798; CHECK: # %bb.0: # %entry 17799; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17800; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 17801; CHECK-NEXT: vmv1r.v v8, v10 17802; CHECK-NEXT: ret 17803entry: 17804 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17805 %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) 17806 ret <vscale x 1 x bfloat> %1 17807} 17808 17809 17810define <vscale x 1 x bfloat> @test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 17811; CHECK-LABEL: test_vluxseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i64: 17812; CHECK: # %bb.0: # %entry 17813; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17814; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8 17815; CHECK-NEXT: vmv1r.v v8, v10 17816; CHECK-NEXT: ret 17817entry: 17818 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv2i8_7t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 17819 %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) 17820 ret <vscale x 1 x bfloat> %1 17821} 17822 17823define <vscale x 1 x bfloat> @test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 17824; CHECK-LABEL: test_vluxseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t_nxv1i64: 17825; CHECK: # %bb.0: # %entry 17826; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 17827; CHECK-NEXT: vluxseg7ei64.v v9, (a0), v8, v0.t 17828; CHECK-NEXT: vmv1r.v v8, v10 17829; CHECK-NEXT: ret 17830entry: 17831 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 17832 %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) 17833 ret <vscale x 1 x bfloat> %1 17834} 17835 17836 17837define <vscale x 2 x bfloat> @test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 17838; CHECK-LABEL: test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i8: 17839; CHECK: # %bb.0: # %entry 17840; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17841; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 17842; CHECK-NEXT: vmv1r.v v8, v10 17843; CHECK-NEXT: ret 17844entry: 17845 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 17846 %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) 17847 ret <vscale x 2 x bfloat> %1 17848} 17849 17850define <vscale x 2 x bfloat> @test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17851; CHECK-LABEL: test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i8: 17852; CHECK: # %bb.0: # %entry 17853; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17854; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 17855; CHECK-NEXT: vmv1r.v v8, v10 17856; CHECK-NEXT: ret 17857entry: 17858 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17859 %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) 17860 ret <vscale x 2 x bfloat> %1 17861} 17862 17863 17864define <vscale x 2 x bfloat> @test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 17865; CHECK-LABEL: test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i16: 17866; CHECK: # %bb.0: # %entry 17867; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17868; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 17869; CHECK-NEXT: vmv1r.v v8, v10 17870; CHECK-NEXT: ret 17871entry: 17872 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 17873 %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) 17874 ret <vscale x 2 x bfloat> %1 17875} 17876 17877define <vscale x 2 x bfloat> @test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17878; CHECK-LABEL: test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i16: 17879; CHECK: # %bb.0: # %entry 17880; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17881; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 17882; CHECK-NEXT: vmv1r.v v8, v10 17883; CHECK-NEXT: ret 17884entry: 17885 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17886 %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) 17887 ret <vscale x 2 x bfloat> %1 17888} 17889 17890 17891define <vscale x 2 x bfloat> @test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 17892; CHECK-LABEL: test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i32: 17893; CHECK: # %bb.0: # %entry 17894; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17895; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8 17896; CHECK-NEXT: vmv1r.v v8, v10 17897; CHECK-NEXT: ret 17898entry: 17899 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 17900 %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) 17901 ret <vscale x 2 x bfloat> %1 17902} 17903 17904define <vscale x 2 x bfloat> @test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17905; CHECK-LABEL: test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i32: 17906; CHECK: # %bb.0: # %entry 17907; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17908; CHECK-NEXT: vluxseg7ei32.v v9, (a0), v8, v0.t 17909; CHECK-NEXT: vmv1r.v v8, v10 17910; CHECK-NEXT: ret 17911entry: 17912 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17913 %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) 17914 ret <vscale x 2 x bfloat> %1 17915} 17916 17917 17918define <vscale x 2 x bfloat> @test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 17919; CHECK-LABEL: test_vluxseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i64: 17920; CHECK: # %bb.0: # %entry 17921; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17922; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8 17923; CHECK-NEXT: vmv1r.v v8, v11 17924; CHECK-NEXT: ret 17925entry: 17926 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv4i8_7t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 17927 %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) 17928 ret <vscale x 2 x bfloat> %1 17929} 17930 17931define <vscale x 2 x bfloat> @test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 17932; CHECK-LABEL: test_vluxseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t_nxv2i64: 17933; CHECK: # %bb.0: # %entry 17934; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 17935; CHECK-NEXT: vluxseg7ei64.v v10, (a0), v8, v0.t 17936; CHECK-NEXT: vmv1r.v v8, v11 17937; CHECK-NEXT: ret 17938entry: 17939 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 17940 %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) 17941 ret <vscale x 2 x bfloat> %1 17942} 17943 17944 17945define <vscale x 4 x bfloat> @test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 17946; CHECK-LABEL: test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i8: 17947; CHECK: # %bb.0: # %entry 17948; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17949; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8 17950; CHECK-NEXT: vmv1r.v v8, v10 17951; CHECK-NEXT: ret 17952entry: 17953 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 17954 %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) 17955 ret <vscale x 4 x bfloat> %1 17956} 17957 17958define <vscale x 4 x bfloat> @test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17959; CHECK-LABEL: test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i8: 17960; CHECK: # %bb.0: # %entry 17961; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17962; CHECK-NEXT: vluxseg7ei8.v v9, (a0), v8, v0.t 17963; CHECK-NEXT: vmv1r.v v8, v10 17964; CHECK-NEXT: ret 17965entry: 17966 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17967 %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) 17968 ret <vscale x 4 x bfloat> %1 17969} 17970 17971 17972define <vscale x 4 x bfloat> @test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 17973; CHECK-LABEL: test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i16: 17974; CHECK: # %bb.0: # %entry 17975; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17976; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8 17977; CHECK-NEXT: vmv1r.v v8, v10 17978; CHECK-NEXT: ret 17979entry: 17980 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 17981 %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) 17982 ret <vscale x 4 x bfloat> %1 17983} 17984 17985define <vscale x 4 x bfloat> @test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 17986; CHECK-LABEL: test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i16: 17987; CHECK: # %bb.0: # %entry 17988; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 17989; CHECK-NEXT: vluxseg7ei16.v v9, (a0), v8, v0.t 17990; CHECK-NEXT: vmv1r.v v8, v10 17991; CHECK-NEXT: ret 17992entry: 17993 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 17994 %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) 17995 ret <vscale x 4 x bfloat> %1 17996} 17997 17998 17999define <vscale x 4 x bfloat> @test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 18000; CHECK-LABEL: test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i32: 18001; CHECK: # %bb.0: # %entry 18002; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18003; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8 18004; CHECK-NEXT: vmv1r.v v8, v11 18005; CHECK-NEXT: ret 18006entry: 18007 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 18008 %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) 18009 ret <vscale x 4 x bfloat> %1 18010} 18011 18012define <vscale x 4 x bfloat> @test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 18013; CHECK-LABEL: test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i32: 18014; CHECK: # %bb.0: # %entry 18015; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18016; CHECK-NEXT: vluxseg7ei32.v v10, (a0), v8, v0.t 18017; CHECK-NEXT: vmv1r.v v8, v11 18018; CHECK-NEXT: ret 18019entry: 18020 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 18021 %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) 18022 ret <vscale x 4 x bfloat> %1 18023} 18024 18025 18026define <vscale x 4 x bfloat> @test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 18027; CHECK-LABEL: test_vluxseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i64: 18028; CHECK: # %bb.0: # %entry 18029; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18030; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8 18031; CHECK-NEXT: vmv1r.v v8, v13 18032; CHECK-NEXT: ret 18033entry: 18034 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.triscv.vector.tuple_nxv8i8_7t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 18035 %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) 18036 ret <vscale x 4 x bfloat> %1 18037} 18038 18039define <vscale x 4 x bfloat> @test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 18040; CHECK-LABEL: test_vluxseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t_nxv4i64: 18041; CHECK: # %bb.0: # %entry 18042; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18043; CHECK-NEXT: vluxseg7ei64.v v12, (a0), v8, v0.t 18044; CHECK-NEXT: vmv1r.v v8, v13 18045; CHECK-NEXT: ret 18046entry: 18047 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vluxseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 18048 %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) 18049 ret <vscale x 4 x bfloat> %1 18050} 18051 18052 18053define <vscale x 1 x bfloat> @test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl) { 18054; CHECK-LABEL: test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i8: 18055; CHECK: # %bb.0: # %entry 18056; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18057; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 18058; CHECK-NEXT: vmv1r.v v8, v10 18059; CHECK-NEXT: ret 18060entry: 18061 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, i64 %vl, i64 4) 18062 %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) 18063 ret <vscale x 1 x bfloat> %1 18064} 18065 18066define <vscale x 1 x bfloat> @test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i8(ptr %base, <vscale x 1 x i8> %index, i64 %vl, <vscale x 1 x i1> %mask) { 18067; CHECK-LABEL: test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i8: 18068; CHECK: # %bb.0: # %entry 18069; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18070; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 18071; CHECK-NEXT: vmv1r.v v8, v10 18072; CHECK-NEXT: ret 18073entry: 18074 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i8(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 18075 %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) 18076 ret <vscale x 1 x bfloat> %1 18077} 18078 18079 18080define <vscale x 1 x bfloat> @test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl) { 18081; CHECK-LABEL: test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i16: 18082; CHECK: # %bb.0: # %entry 18083; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18084; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 18085; CHECK-NEXT: vmv1r.v v8, v10 18086; CHECK-NEXT: ret 18087entry: 18088 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, i64 %vl, i64 4) 18089 %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) 18090 ret <vscale x 1 x bfloat> %1 18091} 18092 18093define <vscale x 1 x bfloat> @test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i16(ptr %base, <vscale x 1 x i16> %index, i64 %vl, <vscale x 1 x i1> %mask) { 18094; CHECK-LABEL: test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i16: 18095; CHECK: # %bb.0: # %entry 18096; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18097; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 18098; CHECK-NEXT: vmv1r.v v8, v10 18099; CHECK-NEXT: ret 18100entry: 18101 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i16(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 18102 %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) 18103 ret <vscale x 1 x bfloat> %1 18104} 18105 18106 18107define <vscale x 1 x bfloat> @test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl) { 18108; CHECK-LABEL: test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i32: 18109; CHECK: # %bb.0: # %entry 18110; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18111; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 18112; CHECK-NEXT: vmv1r.v v8, v10 18113; CHECK-NEXT: ret 18114entry: 18115 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, i64 %vl, i64 4) 18116 %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) 18117 ret <vscale x 1 x bfloat> %1 18118} 18119 18120define <vscale x 1 x bfloat> @test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i32(ptr %base, <vscale x 1 x i32> %index, i64 %vl, <vscale x 1 x i1> %mask) { 18121; CHECK-LABEL: test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i32: 18122; CHECK: # %bb.0: # %entry 18123; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18124; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 18125; CHECK-NEXT: vmv1r.v v8, v10 18126; CHECK-NEXT: ret 18127entry: 18128 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i32(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 18129 %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) 18130 ret <vscale x 1 x bfloat> %1 18131} 18132 18133 18134define <vscale x 1 x bfloat> @test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl) { 18135; CHECK-LABEL: test_vluxseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i64: 18136; CHECK: # %bb.0: # %entry 18137; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18138; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8 18139; CHECK-NEXT: vmv1r.v v8, v10 18140; CHECK-NEXT: ret 18141entry: 18142 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv2i8_8t.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, i64 %vl, i64 4) 18143 %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) 18144 ret <vscale x 1 x bfloat> %1 18145} 18146 18147define <vscale x 1 x bfloat> @test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i64(ptr %base, <vscale x 1 x i64> %index, i64 %vl, <vscale x 1 x i1> %mask) { 18148; CHECK-LABEL: test_vluxseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t_nxv1i64: 18149; CHECK: # %bb.0: # %entry 18150; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 18151; CHECK-NEXT: vluxseg8ei64.v v9, (a0), v8, v0.t 18152; CHECK-NEXT: vmv1r.v v8, v10 18153; CHECK-NEXT: ret 18154entry: 18155 %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1.nxv1i64(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, <vscale x 1 x i64> %index, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4) 18156 %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) 18157 ret <vscale x 1 x bfloat> %1 18158} 18159 18160 18161define <vscale x 2 x bfloat> @test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl) { 18162; CHECK-LABEL: test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i8: 18163; CHECK: # %bb.0: # %entry 18164; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18165; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 18166; CHECK-NEXT: vmv1r.v v8, v10 18167; CHECK-NEXT: ret 18168entry: 18169 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, i64 %vl, i64 4) 18170 %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) 18171 ret <vscale x 2 x bfloat> %1 18172} 18173 18174define <vscale x 2 x bfloat> @test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i8(ptr %base, <vscale x 2 x i8> %index, i64 %vl, <vscale x 2 x i1> %mask) { 18175; CHECK-LABEL: test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i8: 18176; CHECK: # %bb.0: # %entry 18177; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18178; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 18179; CHECK-NEXT: vmv1r.v v8, v10 18180; CHECK-NEXT: ret 18181entry: 18182 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i8(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 18183 %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) 18184 ret <vscale x 2 x bfloat> %1 18185} 18186 18187 18188define <vscale x 2 x bfloat> @test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl) { 18189; CHECK-LABEL: test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i16: 18190; CHECK: # %bb.0: # %entry 18191; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18192; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 18193; CHECK-NEXT: vmv1r.v v8, v10 18194; CHECK-NEXT: ret 18195entry: 18196 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, i64 %vl, i64 4) 18197 %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) 18198 ret <vscale x 2 x bfloat> %1 18199} 18200 18201define <vscale x 2 x bfloat> @test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i16(ptr %base, <vscale x 2 x i16> %index, i64 %vl, <vscale x 2 x i1> %mask) { 18202; CHECK-LABEL: test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i16: 18203; CHECK: # %bb.0: # %entry 18204; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18205; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 18206; CHECK-NEXT: vmv1r.v v8, v10 18207; CHECK-NEXT: ret 18208entry: 18209 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i16(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 18210 %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) 18211 ret <vscale x 2 x bfloat> %1 18212} 18213 18214 18215define <vscale x 2 x bfloat> @test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl) { 18216; CHECK-LABEL: test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i32: 18217; CHECK: # %bb.0: # %entry 18218; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18219; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8 18220; CHECK-NEXT: vmv1r.v v8, v10 18221; CHECK-NEXT: ret 18222entry: 18223 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, i64 %vl, i64 4) 18224 %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) 18225 ret <vscale x 2 x bfloat> %1 18226} 18227 18228define <vscale x 2 x bfloat> @test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i32(ptr %base, <vscale x 2 x i32> %index, i64 %vl, <vscale x 2 x i1> %mask) { 18229; CHECK-LABEL: test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i32: 18230; CHECK: # %bb.0: # %entry 18231; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18232; CHECK-NEXT: vluxseg8ei32.v v9, (a0), v8, v0.t 18233; CHECK-NEXT: vmv1r.v v8, v10 18234; CHECK-NEXT: ret 18235entry: 18236 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i32(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 18237 %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) 18238 ret <vscale x 2 x bfloat> %1 18239} 18240 18241 18242define <vscale x 2 x bfloat> @test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl) { 18243; CHECK-LABEL: test_vluxseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i64: 18244; CHECK: # %bb.0: # %entry 18245; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18246; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8 18247; CHECK-NEXT: vmv1r.v v8, v11 18248; CHECK-NEXT: ret 18249entry: 18250 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv4i8_8t.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, i64 %vl, i64 4) 18251 %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) 18252 ret <vscale x 2 x bfloat> %1 18253} 18254 18255define <vscale x 2 x bfloat> @test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i64(ptr %base, <vscale x 2 x i64> %index, i64 %vl, <vscale x 2 x i1> %mask) { 18256; CHECK-LABEL: test_vluxseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t_nxv2i64: 18257; CHECK: # %bb.0: # %entry 18258; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 18259; CHECK-NEXT: vluxseg8ei64.v v10, (a0), v8, v0.t 18260; CHECK-NEXT: vmv1r.v v8, v11 18261; CHECK-NEXT: ret 18262entry: 18263 %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1.nxv2i64(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, <vscale x 2 x i64> %index, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4) 18264 %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) 18265 ret <vscale x 2 x bfloat> %1 18266} 18267 18268 18269define <vscale x 4 x bfloat> @test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl) { 18270; CHECK-LABEL: test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i8: 18271; CHECK: # %bb.0: # %entry 18272; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18273; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8 18274; CHECK-NEXT: vmv1r.v v8, v10 18275; CHECK-NEXT: ret 18276entry: 18277 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, i64 %vl, i64 4) 18278 %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) 18279 ret <vscale x 4 x bfloat> %1 18280} 18281 18282define <vscale x 4 x bfloat> @test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i8(ptr %base, <vscale x 4 x i8> %index, i64 %vl, <vscale x 4 x i1> %mask) { 18283; CHECK-LABEL: test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i8: 18284; CHECK: # %bb.0: # %entry 18285; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18286; CHECK-NEXT: vluxseg8ei8.v v9, (a0), v8, v0.t 18287; CHECK-NEXT: vmv1r.v v8, v10 18288; CHECK-NEXT: ret 18289entry: 18290 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i8(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 18291 %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) 18292 ret <vscale x 4 x bfloat> %1 18293} 18294 18295 18296define <vscale x 4 x bfloat> @test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl) { 18297; CHECK-LABEL: test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i16: 18298; CHECK: # %bb.0: # %entry 18299; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18300; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8 18301; CHECK-NEXT: vmv1r.v v8, v10 18302; CHECK-NEXT: ret 18303entry: 18304 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, i64 %vl, i64 4) 18305 %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) 18306 ret <vscale x 4 x bfloat> %1 18307} 18308 18309define <vscale x 4 x bfloat> @test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i16(ptr %base, <vscale x 4 x i16> %index, i64 %vl, <vscale x 4 x i1> %mask) { 18310; CHECK-LABEL: test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i16: 18311; CHECK: # %bb.0: # %entry 18312; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18313; CHECK-NEXT: vluxseg8ei16.v v9, (a0), v8, v0.t 18314; CHECK-NEXT: vmv1r.v v8, v10 18315; CHECK-NEXT: ret 18316entry: 18317 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i16(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 18318 %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) 18319 ret <vscale x 4 x bfloat> %1 18320} 18321 18322 18323define <vscale x 4 x bfloat> @test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl) { 18324; CHECK-LABEL: test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i32: 18325; CHECK: # %bb.0: # %entry 18326; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18327; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8 18328; CHECK-NEXT: vmv1r.v v8, v11 18329; CHECK-NEXT: ret 18330entry: 18331 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, i64 %vl, i64 4) 18332 %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) 18333 ret <vscale x 4 x bfloat> %1 18334} 18335 18336define <vscale x 4 x bfloat> @test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i32(ptr %base, <vscale x 4 x i32> %index, i64 %vl, <vscale x 4 x i1> %mask) { 18337; CHECK-LABEL: test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i32: 18338; CHECK: # %bb.0: # %entry 18339; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18340; CHECK-NEXT: vluxseg8ei32.v v10, (a0), v8, v0.t 18341; CHECK-NEXT: vmv1r.v v8, v11 18342; CHECK-NEXT: ret 18343entry: 18344 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i32(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 18345 %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) 18346 ret <vscale x 4 x bfloat> %1 18347} 18348 18349 18350define <vscale x 4 x bfloat> @test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl) { 18351; CHECK-LABEL: test_vluxseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i64: 18352; CHECK: # %bb.0: # %entry 18353; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18354; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8 18355; CHECK-NEXT: vmv1r.v v8, v13 18356; CHECK-NEXT: ret 18357entry: 18358 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.triscv.vector.tuple_nxv8i8_8t.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, i64 %vl, i64 4) 18359 %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) 18360 ret <vscale x 4 x bfloat> %1 18361} 18362 18363define <vscale x 4 x bfloat> @test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i64(ptr %base, <vscale x 4 x i64> %index, i64 %vl, <vscale x 4 x i1> %mask) { 18364; CHECK-LABEL: test_vluxseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t_nxv4i64: 18365; CHECK: # %bb.0: # %entry 18366; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 18367; CHECK-NEXT: vluxseg8ei64.v v12, (a0), v8, v0.t 18368; CHECK-NEXT: vmv1r.v v8, v13 18369; CHECK-NEXT: ret 18370entry: 18371 %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vluxseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1.nxv4i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, <vscale x 4 x i64> %index, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4) 18372 %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) 18373 ret <vscale x 4 x bfloat> %1 18374} 18375 18376