4401 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+d,+zfhmin,+zvfh,+zvfbfmin \3; RUN: -verify-machineinstrs | FileCheck %s4; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+d,+zfhmin,+zvfh,+zvfbfmin \5; RUN: -verify-machineinstrs | FileCheck %s6 7define <vscale x 1 x i8> @intrinsic_vrgather_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {8; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i8_nxv1i8_nxv1i8:9; CHECK: # %bb.0: # %entry10; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma11; CHECK-NEXT: vrgather.vv v10, v8, v912; CHECK-NEXT: vmv1r.v v8, v1013; CHECK-NEXT: ret14entry:15 %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vv.nxv1i8.iXLen(16 <vscale x 1 x i8> poison,17 <vscale x 1 x i8> %0,18 <vscale x 1 x i8> %1,19 iXLen %2)20 21 ret <vscale x 1 x i8> %a22}23 24define <vscale x 1 x i8> @intrinsic_vrgather_mask_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {25; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i8_nxv1i8_nxv1i8:26; CHECK: # %bb.0: # %entry27; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, mu28; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t29; CHECK-NEXT: ret30entry:31 %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vv.mask.nxv1i8.iXLen(32 <vscale x 1 x i8> %0,33 <vscale x 1 x i8> %1,34 <vscale x 1 x i8> %2,35 <vscale x 1 x i1> %3,36 iXLen %4, iXLen 1)37 38 ret <vscale x 1 x i8> %a39}40 41define <vscale x 2 x i8> @intrinsic_vrgather_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {42; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i8_nxv2i8_nxv2i8:43; CHECK: # %bb.0: # %entry44; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma45; CHECK-NEXT: vrgather.vv v10, v8, v946; CHECK-NEXT: vmv1r.v v8, v1047; CHECK-NEXT: ret48entry:49 %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vv.nxv2i8.iXLen(50 <vscale x 2 x i8> poison,51 <vscale x 2 x i8> %0,52 <vscale x 2 x i8> %1,53 iXLen %2)54 55 ret <vscale x 2 x i8> %a56}57 58define <vscale x 2 x i8> @intrinsic_vrgather_mask_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {59; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i8_nxv2i8_nxv2i8:60; CHECK: # %bb.0: # %entry61; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, mu62; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t63; CHECK-NEXT: ret64entry:65 %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vv.mask.nxv2i8.iXLen(66 <vscale x 2 x i8> %0,67 <vscale x 2 x i8> %1,68 <vscale x 2 x i8> %2,69 <vscale x 2 x i1> %3,70 iXLen %4, iXLen 1)71 72 ret <vscale x 2 x i8> %a73}74 75define <vscale x 4 x i8> @intrinsic_vrgather_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {76; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i8_nxv4i8_nxv4i8:77; CHECK: # %bb.0: # %entry78; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma79; CHECK-NEXT: vrgather.vv v10, v8, v980; CHECK-NEXT: vmv1r.v v8, v1081; CHECK-NEXT: ret82entry:83 %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vv.nxv4i8.iXLen(84 <vscale x 4 x i8> poison,85 <vscale x 4 x i8> %0,86 <vscale x 4 x i8> %1,87 iXLen %2)88 89 ret <vscale x 4 x i8> %a90}91 92define <vscale x 4 x i8> @intrinsic_vrgather_mask_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {93; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i8_nxv4i8_nxv4i8:94; CHECK: # %bb.0: # %entry95; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, mu96; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t97; CHECK-NEXT: ret98entry:99 %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vv.mask.nxv4i8.iXLen(100 <vscale x 4 x i8> %0,101 <vscale x 4 x i8> %1,102 <vscale x 4 x i8> %2,103 <vscale x 4 x i1> %3,104 iXLen %4, iXLen 1)105 106 ret <vscale x 4 x i8> %a107}108 109define <vscale x 8 x i8> @intrinsic_vrgather_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {110; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i8_nxv8i8_nxv8i8:111; CHECK: # %bb.0: # %entry112; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma113; CHECK-NEXT: vrgather.vv v10, v8, v9114; CHECK-NEXT: vmv.v.v v8, v10115; CHECK-NEXT: ret116entry:117 %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vv.nxv8i8.iXLen(118 <vscale x 8 x i8> poison,119 <vscale x 8 x i8> %0,120 <vscale x 8 x i8> %1,121 iXLen %2)122 123 ret <vscale x 8 x i8> %a124}125 126define <vscale x 8 x i8> @intrinsic_vrgather_mask_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {127; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i8_nxv8i8_nxv8i8:128; CHECK: # %bb.0: # %entry129; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, mu130; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t131; CHECK-NEXT: ret132entry:133 %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vv.mask.nxv8i8.iXLen(134 <vscale x 8 x i8> %0,135 <vscale x 8 x i8> %1,136 <vscale x 8 x i8> %2,137 <vscale x 8 x i1> %3,138 iXLen %4, iXLen 1)139 140 ret <vscale x 8 x i8> %a141}142 143define <vscale x 16 x i8> @intrinsic_vrgather_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {144; CHECK-LABEL: intrinsic_vrgather_vv_nxv16i8_nxv16i8_nxv16i8:145; CHECK: # %bb.0: # %entry146; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma147; CHECK-NEXT: vrgather.vv v12, v8, v10148; CHECK-NEXT: vmv.v.v v8, v12149; CHECK-NEXT: ret150entry:151 %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vv.nxv16i8.iXLen(152 <vscale x 16 x i8> poison,153 <vscale x 16 x i8> %0,154 <vscale x 16 x i8> %1,155 iXLen %2)156 157 ret <vscale x 16 x i8> %a158}159 160define <vscale x 16 x i8> @intrinsic_vrgather_mask_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {161; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16i8_nxv16i8_nxv16i8:162; CHECK: # %bb.0: # %entry163; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, mu164; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t165; CHECK-NEXT: ret166entry:167 %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vv.mask.nxv16i8.iXLen(168 <vscale x 16 x i8> %0,169 <vscale x 16 x i8> %1,170 <vscale x 16 x i8> %2,171 <vscale x 16 x i1> %3,172 iXLen %4, iXLen 1)173 174 ret <vscale x 16 x i8> %a175}176 177define <vscale x 32 x i8> @intrinsic_vrgather_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {178; CHECK-LABEL: intrinsic_vrgather_vv_nxv32i8_nxv32i8_nxv32i8:179; CHECK: # %bb.0: # %entry180; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma181; CHECK-NEXT: vrgather.vv v16, v8, v12182; CHECK-NEXT: vmv.v.v v8, v16183; CHECK-NEXT: ret184entry:185 %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vv.nxv32i8.iXLen(186 <vscale x 32 x i8> poison,187 <vscale x 32 x i8> %0,188 <vscale x 32 x i8> %1,189 iXLen %2)190 191 ret <vscale x 32 x i8> %a192}193 194define <vscale x 32 x i8> @intrinsic_vrgather_mask_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {195; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32i8_nxv32i8_nxv32i8:196; CHECK: # %bb.0: # %entry197; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, mu198; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t199; CHECK-NEXT: ret200entry:201 %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vv.mask.nxv32i8.iXLen(202 <vscale x 32 x i8> %0,203 <vscale x 32 x i8> %1,204 <vscale x 32 x i8> %2,205 <vscale x 32 x i1> %3,206 iXLen %4, iXLen 1)207 208 ret <vscale x 32 x i8> %a209}210 211define <vscale x 64 x i8> @intrinsic_vrgather_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {212; CHECK-LABEL: intrinsic_vrgather_vv_nxv64i8_nxv64i8_nxv64i8:213; CHECK: # %bb.0: # %entry214; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma215; CHECK-NEXT: vrgather.vv v24, v8, v16216; CHECK-NEXT: vmv.v.v v8, v24217; CHECK-NEXT: ret218entry:219 %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vv.nxv64i8.iXLen(220 <vscale x 64 x i8> poison,221 <vscale x 64 x i8> %0,222 <vscale x 64 x i8> %1,223 iXLen %2)224 225 ret <vscale x 64 x i8> %a226}227 228define <vscale x 64 x i8> @intrinsic_vrgather_mask_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i8> %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {229; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv64i8_nxv64i8_nxv64i8:230; CHECK: # %bb.0: # %entry231; CHECK-NEXT: vl8r.v v24, (a0)232; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, mu233; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t234; CHECK-NEXT: ret235entry:236 %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vv.mask.nxv64i8.iXLen(237 <vscale x 64 x i8> %0,238 <vscale x 64 x i8> %1,239 <vscale x 64 x i8> %2,240 <vscale x 64 x i1> %3,241 iXLen %4, iXLen 1)242 243 ret <vscale x 64 x i8> %a244}245 246define <vscale x 1 x i16> @intrinsic_vrgather_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {247; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i16_nxv1i16_nxv1i16:248; CHECK: # %bb.0: # %entry249; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma250; CHECK-NEXT: vrgather.vv v10, v8, v9251; CHECK-NEXT: vmv1r.v v8, v10252; CHECK-NEXT: ret253entry:254 %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vv.nxv1i16.iXLen(255 <vscale x 1 x i16> poison,256 <vscale x 1 x i16> %0,257 <vscale x 1 x i16> %1,258 iXLen %2)259 260 ret <vscale x 1 x i16> %a261}262 263define <vscale x 1 x i16> @intrinsic_vrgather_mask_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {264; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i16_nxv1i16_nxv1i16:265; CHECK: # %bb.0: # %entry266; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu267; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t268; CHECK-NEXT: ret269entry:270 %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vv.mask.nxv1i16.iXLen(271 <vscale x 1 x i16> %0,272 <vscale x 1 x i16> %1,273 <vscale x 1 x i16> %2,274 <vscale x 1 x i1> %3,275 iXLen %4, iXLen 1)276 277 ret <vscale x 1 x i16> %a278}279 280define <vscale x 2 x i16> @intrinsic_vrgather_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {281; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i16_nxv2i16_nxv2i16:282; CHECK: # %bb.0: # %entry283; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma284; CHECK-NEXT: vrgather.vv v10, v8, v9285; CHECK-NEXT: vmv1r.v v8, v10286; CHECK-NEXT: ret287entry:288 %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vv.nxv2i16.iXLen(289 <vscale x 2 x i16> poison,290 <vscale x 2 x i16> %0,291 <vscale x 2 x i16> %1,292 iXLen %2)293 294 ret <vscale x 2 x i16> %a295}296 297define <vscale x 2 x i16> @intrinsic_vrgather_mask_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {298; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i16_nxv2i16_nxv2i16:299; CHECK: # %bb.0: # %entry300; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu301; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t302; CHECK-NEXT: ret303entry:304 %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vv.mask.nxv2i16.iXLen(305 <vscale x 2 x i16> %0,306 <vscale x 2 x i16> %1,307 <vscale x 2 x i16> %2,308 <vscale x 2 x i1> %3,309 iXLen %4, iXLen 1)310 311 ret <vscale x 2 x i16> %a312}313 314define <vscale x 4 x i16> @intrinsic_vrgather_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {315; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i16_nxv4i16_nxv4i16:316; CHECK: # %bb.0: # %entry317; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma318; CHECK-NEXT: vrgather.vv v10, v8, v9319; CHECK-NEXT: vmv.v.v v8, v10320; CHECK-NEXT: ret321entry:322 %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vv.nxv4i16.iXLen(323 <vscale x 4 x i16> poison,324 <vscale x 4 x i16> %0,325 <vscale x 4 x i16> %1,326 iXLen %2)327 328 ret <vscale x 4 x i16> %a329}330 331define <vscale x 4 x i16> @intrinsic_vrgather_mask_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {332; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i16_nxv4i16_nxv4i16:333; CHECK: # %bb.0: # %entry334; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu335; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t336; CHECK-NEXT: ret337entry:338 %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vv.mask.nxv4i16.iXLen(339 <vscale x 4 x i16> %0,340 <vscale x 4 x i16> %1,341 <vscale x 4 x i16> %2,342 <vscale x 4 x i1> %3,343 iXLen %4, iXLen 1)344 345 ret <vscale x 4 x i16> %a346}347 348define <vscale x 8 x i16> @intrinsic_vrgather_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {349; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i16_nxv8i16_nxv8i16:350; CHECK: # %bb.0: # %entry351; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma352; CHECK-NEXT: vrgather.vv v12, v8, v10353; CHECK-NEXT: vmv.v.v v8, v12354; CHECK-NEXT: ret355entry:356 %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vv.nxv8i16.iXLen(357 <vscale x 8 x i16> poison,358 <vscale x 8 x i16> %0,359 <vscale x 8 x i16> %1,360 iXLen %2)361 362 ret <vscale x 8 x i16> %a363}364 365define <vscale x 8 x i16> @intrinsic_vrgather_mask_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {366; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i16_nxv8i16_nxv8i16:367; CHECK: # %bb.0: # %entry368; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu369; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t370; CHECK-NEXT: ret371entry:372 %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vv.mask.nxv8i16.iXLen(373 <vscale x 8 x i16> %0,374 <vscale x 8 x i16> %1,375 <vscale x 8 x i16> %2,376 <vscale x 8 x i1> %3,377 iXLen %4, iXLen 1)378 379 ret <vscale x 8 x i16> %a380}381 382define <vscale x 16 x i16> @intrinsic_vrgather_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {383; CHECK-LABEL: intrinsic_vrgather_vv_nxv16i16_nxv16i16_nxv16i16:384; CHECK: # %bb.0: # %entry385; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma386; CHECK-NEXT: vrgather.vv v16, v8, v12387; CHECK-NEXT: vmv.v.v v8, v16388; CHECK-NEXT: ret389entry:390 %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vv.nxv16i16.iXLen(391 <vscale x 16 x i16> poison,392 <vscale x 16 x i16> %0,393 <vscale x 16 x i16> %1,394 iXLen %2)395 396 ret <vscale x 16 x i16> %a397}398 399define <vscale x 16 x i16> @intrinsic_vrgather_mask_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {400; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16i16_nxv16i16_nxv16i16:401; CHECK: # %bb.0: # %entry402; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu403; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t404; CHECK-NEXT: ret405entry:406 %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vv.mask.nxv16i16.iXLen(407 <vscale x 16 x i16> %0,408 <vscale x 16 x i16> %1,409 <vscale x 16 x i16> %2,410 <vscale x 16 x i1> %3,411 iXLen %4, iXLen 1)412 413 ret <vscale x 16 x i16> %a414}415 416define <vscale x 32 x i16> @intrinsic_vrgather_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {417; CHECK-LABEL: intrinsic_vrgather_vv_nxv32i16_nxv32i16_nxv32i16:418; CHECK: # %bb.0: # %entry419; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma420; CHECK-NEXT: vrgather.vv v24, v8, v16421; CHECK-NEXT: vmv.v.v v8, v24422; CHECK-NEXT: ret423entry:424 %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vv.nxv32i16.iXLen(425 <vscale x 32 x i16> poison,426 <vscale x 32 x i16> %0,427 <vscale x 32 x i16> %1,428 iXLen %2)429 430 ret <vscale x 32 x i16> %a431}432 433define <vscale x 32 x i16> @intrinsic_vrgather_mask_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {434; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32i16_nxv32i16_nxv32i16:435; CHECK: # %bb.0: # %entry436; CHECK-NEXT: vl8re16.v v24, (a0)437; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu438; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t439; CHECK-NEXT: ret440entry:441 %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vv.mask.nxv32i16.iXLen(442 <vscale x 32 x i16> %0,443 <vscale x 32 x i16> %1,444 <vscale x 32 x i16> %2,445 <vscale x 32 x i1> %3,446 iXLen %4, iXLen 1)447 448 ret <vscale x 32 x i16> %a449}450 451define <vscale x 1 x i32> @intrinsic_vrgather_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {452; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i32_nxv1i32_nxv1i32:453; CHECK: # %bb.0: # %entry454; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma455; CHECK-NEXT: vrgather.vv v10, v8, v9456; CHECK-NEXT: vmv1r.v v8, v10457; CHECK-NEXT: ret458entry:459 %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vv.nxv1i32.iXLen(460 <vscale x 1 x i32> poison,461 <vscale x 1 x i32> %0,462 <vscale x 1 x i32> %1,463 iXLen %2)464 465 ret <vscale x 1 x i32> %a466}467 468define <vscale x 1 x i32> @intrinsic_vrgather_mask_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {469; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i32_nxv1i32_nxv1i32:470; CHECK: # %bb.0: # %entry471; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu472; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t473; CHECK-NEXT: ret474entry:475 %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vv.mask.nxv1i32.iXLen(476 <vscale x 1 x i32> %0,477 <vscale x 1 x i32> %1,478 <vscale x 1 x i32> %2,479 <vscale x 1 x i1> %3,480 iXLen %4, iXLen 1)481 482 ret <vscale x 1 x i32> %a483}484 485define <vscale x 2 x i32> @intrinsic_vrgather_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {486; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i32_nxv2i32_nxv2i32:487; CHECK: # %bb.0: # %entry488; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma489; CHECK-NEXT: vrgather.vv v10, v8, v9490; CHECK-NEXT: vmv.v.v v8, v10491; CHECK-NEXT: ret492entry:493 %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vv.nxv2i32.iXLen(494 <vscale x 2 x i32> poison,495 <vscale x 2 x i32> %0,496 <vscale x 2 x i32> %1,497 iXLen %2)498 499 ret <vscale x 2 x i32> %a500}501 502define <vscale x 2 x i32> @intrinsic_vrgather_mask_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {503; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i32_nxv2i32_nxv2i32:504; CHECK: # %bb.0: # %entry505; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu506; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t507; CHECK-NEXT: ret508entry:509 %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vv.mask.nxv2i32.iXLen(510 <vscale x 2 x i32> %0,511 <vscale x 2 x i32> %1,512 <vscale x 2 x i32> %2,513 <vscale x 2 x i1> %3,514 iXLen %4, iXLen 1)515 516 ret <vscale x 2 x i32> %a517}518 519define <vscale x 4 x i32> @intrinsic_vrgather_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {520; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i32_nxv4i32_nxv4i32:521; CHECK: # %bb.0: # %entry522; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma523; CHECK-NEXT: vrgather.vv v12, v8, v10524; CHECK-NEXT: vmv.v.v v8, v12525; CHECK-NEXT: ret526entry:527 %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vv.nxv4i32.iXLen(528 <vscale x 4 x i32> poison,529 <vscale x 4 x i32> %0,530 <vscale x 4 x i32> %1,531 iXLen %2)532 533 ret <vscale x 4 x i32> %a534}535 536define <vscale x 4 x i32> @intrinsic_vrgather_mask_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {537; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i32_nxv4i32_nxv4i32:538; CHECK: # %bb.0: # %entry539; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu540; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t541; CHECK-NEXT: ret542entry:543 %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vv.mask.nxv4i32.iXLen(544 <vscale x 4 x i32> %0,545 <vscale x 4 x i32> %1,546 <vscale x 4 x i32> %2,547 <vscale x 4 x i1> %3,548 iXLen %4, iXLen 1)549 550 ret <vscale x 4 x i32> %a551}552 553define <vscale x 8 x i32> @intrinsic_vrgather_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {554; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i32_nxv8i32_nxv8i32:555; CHECK: # %bb.0: # %entry556; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma557; CHECK-NEXT: vrgather.vv v16, v8, v12558; CHECK-NEXT: vmv.v.v v8, v16559; CHECK-NEXT: ret560entry:561 %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vv.nxv8i32.iXLen(562 <vscale x 8 x i32> poison,563 <vscale x 8 x i32> %0,564 <vscale x 8 x i32> %1,565 iXLen %2)566 567 ret <vscale x 8 x i32> %a568}569 570define <vscale x 8 x i32> @intrinsic_vrgather_mask_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {571; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i32_nxv8i32_nxv8i32:572; CHECK: # %bb.0: # %entry573; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu574; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t575; CHECK-NEXT: ret576entry:577 %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vv.mask.nxv8i32.iXLen(578 <vscale x 8 x i32> %0,579 <vscale x 8 x i32> %1,580 <vscale x 8 x i32> %2,581 <vscale x 8 x i1> %3,582 iXLen %4, iXLen 1)583 584 ret <vscale x 8 x i32> %a585}586 587define <vscale x 16 x i32> @intrinsic_vrgather_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {588; CHECK-LABEL: intrinsic_vrgather_vv_nxv16i32_nxv16i32_nxv16i32:589; CHECK: # %bb.0: # %entry590; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma591; CHECK-NEXT: vrgather.vv v24, v8, v16592; CHECK-NEXT: vmv.v.v v8, v24593; CHECK-NEXT: ret594entry:595 %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vv.nxv16i32.iXLen(596 <vscale x 16 x i32> poison,597 <vscale x 16 x i32> %0,598 <vscale x 16 x i32> %1,599 iXLen %2)600 601 ret <vscale x 16 x i32> %a602}603 604define <vscale x 16 x i32> @intrinsic_vrgather_mask_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {605; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16i32_nxv16i32_nxv16i32:606; CHECK: # %bb.0: # %entry607; CHECK-NEXT: vl8re32.v v24, (a0)608; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu609; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t610; CHECK-NEXT: ret611entry:612 %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vv.mask.nxv16i32.iXLen(613 <vscale x 16 x i32> %0,614 <vscale x 16 x i32> %1,615 <vscale x 16 x i32> %2,616 <vscale x 16 x i1> %3,617 iXLen %4, iXLen 1)618 619 ret <vscale x 16 x i32> %a620}621 622define <vscale x 1 x i64> @intrinsic_vrgather_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {623; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i64_nxv1i64_nxv1i64:624; CHECK: # %bb.0: # %entry625; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma626; CHECK-NEXT: vrgather.vv v10, v8, v9627; CHECK-NEXT: vmv.v.v v8, v10628; CHECK-NEXT: ret629entry:630 %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vv.nxv1i64.iXLen(631 <vscale x 1 x i64> poison,632 <vscale x 1 x i64> %0,633 <vscale x 1 x i64> %1,634 iXLen %2)635 636 ret <vscale x 1 x i64> %a637}638 639define <vscale x 1 x i64> @intrinsic_vrgather_mask_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {640; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i64_nxv1i64_nxv1i64:641; CHECK: # %bb.0: # %entry642; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu643; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t644; CHECK-NEXT: ret645entry:646 %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vv.mask.nxv1i64.iXLen(647 <vscale x 1 x i64> %0,648 <vscale x 1 x i64> %1,649 <vscale x 1 x i64> %2,650 <vscale x 1 x i1> %3,651 iXLen %4, iXLen 1)652 653 ret <vscale x 1 x i64> %a654}655 656define <vscale x 2 x i64> @intrinsic_vrgather_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {657; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i64_nxv2i64_nxv2i64:658; CHECK: # %bb.0: # %entry659; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma660; CHECK-NEXT: vrgather.vv v12, v8, v10661; CHECK-NEXT: vmv.v.v v8, v12662; CHECK-NEXT: ret663entry:664 %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vv.nxv2i64.iXLen(665 <vscale x 2 x i64> poison,666 <vscale x 2 x i64> %0,667 <vscale x 2 x i64> %1,668 iXLen %2)669 670 ret <vscale x 2 x i64> %a671}672 673define <vscale x 2 x i64> @intrinsic_vrgather_mask_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {674; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i64_nxv2i64_nxv2i64:675; CHECK: # %bb.0: # %entry676; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu677; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t678; CHECK-NEXT: ret679entry:680 %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vv.mask.nxv2i64.iXLen(681 <vscale x 2 x i64> %0,682 <vscale x 2 x i64> %1,683 <vscale x 2 x i64> %2,684 <vscale x 2 x i1> %3,685 iXLen %4, iXLen 1)686 687 ret <vscale x 2 x i64> %a688}689 690define <vscale x 4 x i64> @intrinsic_vrgather_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {691; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i64_nxv4i64_nxv4i64:692; CHECK: # %bb.0: # %entry693; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma694; CHECK-NEXT: vrgather.vv v16, v8, v12695; CHECK-NEXT: vmv.v.v v8, v16696; CHECK-NEXT: ret697entry:698 %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vv.nxv4i64.iXLen(699 <vscale x 4 x i64> poison,700 <vscale x 4 x i64> %0,701 <vscale x 4 x i64> %1,702 iXLen %2)703 704 ret <vscale x 4 x i64> %a705}706 707define <vscale x 4 x i64> @intrinsic_vrgather_mask_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {708; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i64_nxv4i64_nxv4i64:709; CHECK: # %bb.0: # %entry710; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu711; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t712; CHECK-NEXT: ret713entry:714 %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vv.mask.nxv4i64.iXLen(715 <vscale x 4 x i64> %0,716 <vscale x 4 x i64> %1,717 <vscale x 4 x i64> %2,718 <vscale x 4 x i1> %3,719 iXLen %4, iXLen 1)720 721 ret <vscale x 4 x i64> %a722}723 724define <vscale x 8 x i64> @intrinsic_vrgather_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {725; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i64_nxv8i64_nxv8i64:726; CHECK: # %bb.0: # %entry727; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma728; CHECK-NEXT: vrgather.vv v24, v8, v16729; CHECK-NEXT: vmv.v.v v8, v24730; CHECK-NEXT: ret731entry:732 %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vv.nxv8i64.iXLen(733 <vscale x 8 x i64> poison,734 <vscale x 8 x i64> %0,735 <vscale x 8 x i64> %1,736 iXLen %2)737 738 ret <vscale x 8 x i64> %a739}740 741define <vscale x 8 x i64> @intrinsic_vrgather_mask_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {742; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i64_nxv8i64_nxv8i64:743; CHECK: # %bb.0: # %entry744; CHECK-NEXT: vl8re64.v v24, (a0)745; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu746; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t747; CHECK-NEXT: ret748entry:749 %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vv.mask.nxv8i64.iXLen(750 <vscale x 8 x i64> %0,751 <vscale x 8 x i64> %1,752 <vscale x 8 x i64> %2,753 <vscale x 8 x i1> %3,754 iXLen %4, iXLen 1)755 756 ret <vscale x 8 x i64> %a757}758 759define <vscale x 1 x half> @intrinsic_vrgather_vv_nxv1f16_nxv1f16_nxv1i16(<vscale x 1 x half> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {760; CHECK-LABEL: intrinsic_vrgather_vv_nxv1f16_nxv1f16_nxv1i16:761; CHECK: # %bb.0: # %entry762; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma763; CHECK-NEXT: vrgather.vv v10, v8, v9764; CHECK-NEXT: vmv1r.v v8, v10765; CHECK-NEXT: ret766entry:767 %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vv.nxv1f16.iXLen(768 <vscale x 1 x half> poison,769 <vscale x 1 x half> %0,770 <vscale x 1 x i16> %1,771 iXLen %2)772 773 ret <vscale x 1 x half> %a774}775 776define <vscale x 1 x half> @intrinsic_vrgather_mask_vv_nxv1f16_nxv1f16_nxv1i16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {777; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1f16_nxv1f16_nxv1i16:778; CHECK: # %bb.0: # %entry779; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu780; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t781; CHECK-NEXT: ret782entry:783 %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vv.mask.nxv1f16.iXLen(784 <vscale x 1 x half> %0,785 <vscale x 1 x half> %1,786 <vscale x 1 x i16> %2,787 <vscale x 1 x i1> %3,788 iXLen %4, iXLen 1)789 790 ret <vscale x 1 x half> %a791}792 793define <vscale x 2 x half> @intrinsic_vrgather_vv_nxv2f16_nxv2f16_nxv2i16(<vscale x 2 x half> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {794; CHECK-LABEL: intrinsic_vrgather_vv_nxv2f16_nxv2f16_nxv2i16:795; CHECK: # %bb.0: # %entry796; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma797; CHECK-NEXT: vrgather.vv v10, v8, v9798; CHECK-NEXT: vmv1r.v v8, v10799; CHECK-NEXT: ret800entry:801 %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vv.nxv2f16.iXLen(802 <vscale x 2 x half> poison,803 <vscale x 2 x half> %0,804 <vscale x 2 x i16> %1,805 iXLen %2)806 807 ret <vscale x 2 x half> %a808}809 810define <vscale x 2 x half> @intrinsic_vrgather_mask_vv_nxv2f16_nxv2f16_nxv2i16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {811; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2f16_nxv2f16_nxv2i16:812; CHECK: # %bb.0: # %entry813; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu814; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t815; CHECK-NEXT: ret816entry:817 %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vv.mask.nxv2f16.iXLen(818 <vscale x 2 x half> %0,819 <vscale x 2 x half> %1,820 <vscale x 2 x i16> %2,821 <vscale x 2 x i1> %3,822 iXLen %4, iXLen 1)823 824 ret <vscale x 2 x half> %a825}826 827define <vscale x 4 x half> @intrinsic_vrgather_vv_nxv4f16_nxv4f16_nxv4i16(<vscale x 4 x half> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {828; CHECK-LABEL: intrinsic_vrgather_vv_nxv4f16_nxv4f16_nxv4i16:829; CHECK: # %bb.0: # %entry830; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma831; CHECK-NEXT: vrgather.vv v10, v8, v9832; CHECK-NEXT: vmv.v.v v8, v10833; CHECK-NEXT: ret834entry:835 %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vv.nxv4f16.iXLen(836 <vscale x 4 x half> poison,837 <vscale x 4 x half> %0,838 <vscale x 4 x i16> %1,839 iXLen %2)840 841 ret <vscale x 4 x half> %a842}843 844define <vscale x 4 x half> @intrinsic_vrgather_mask_vv_nxv4f16_nxv4f16_nxv4i16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {845; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4f16_nxv4f16_nxv4i16:846; CHECK: # %bb.0: # %entry847; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu848; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t849; CHECK-NEXT: ret850entry:851 %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vv.mask.nxv4f16.iXLen(852 <vscale x 4 x half> %0,853 <vscale x 4 x half> %1,854 <vscale x 4 x i16> %2,855 <vscale x 4 x i1> %3,856 iXLen %4, iXLen 1)857 858 ret <vscale x 4 x half> %a859}860 861define <vscale x 8 x half> @intrinsic_vrgather_vv_nxv8f16_nxv8f16_nxv8i16(<vscale x 8 x half> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {862; CHECK-LABEL: intrinsic_vrgather_vv_nxv8f16_nxv8f16_nxv8i16:863; CHECK: # %bb.0: # %entry864; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma865; CHECK-NEXT: vrgather.vv v12, v8, v10866; CHECK-NEXT: vmv.v.v v8, v12867; CHECK-NEXT: ret868entry:869 %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vv.nxv8f16.iXLen(870 <vscale x 8 x half> poison,871 <vscale x 8 x half> %0,872 <vscale x 8 x i16> %1,873 iXLen %2)874 875 ret <vscale x 8 x half> %a876}877 878define <vscale x 8 x half> @intrinsic_vrgather_mask_vv_nxv8f16_nxv8f16_nxv8i16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {879; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8f16_nxv8f16_nxv8i16:880; CHECK: # %bb.0: # %entry881; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu882; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t883; CHECK-NEXT: ret884entry:885 %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vv.mask.nxv8f16.iXLen(886 <vscale x 8 x half> %0,887 <vscale x 8 x half> %1,888 <vscale x 8 x i16> %2,889 <vscale x 8 x i1> %3,890 iXLen %4, iXLen 1)891 892 ret <vscale x 8 x half> %a893}894 895define <vscale x 16 x half> @intrinsic_vrgather_vv_nxv16f16_nxv16f16_nxv16i16(<vscale x 16 x half> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {896; CHECK-LABEL: intrinsic_vrgather_vv_nxv16f16_nxv16f16_nxv16i16:897; CHECK: # %bb.0: # %entry898; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma899; CHECK-NEXT: vrgather.vv v16, v8, v12900; CHECK-NEXT: vmv.v.v v8, v16901; CHECK-NEXT: ret902entry:903 %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vv.nxv16f16.iXLen(904 <vscale x 16 x half> poison,905 <vscale x 16 x half> %0,906 <vscale x 16 x i16> %1,907 iXLen %2)908 909 ret <vscale x 16 x half> %a910}911 912define <vscale x 16 x half> @intrinsic_vrgather_mask_vv_nxv16f16_nxv16f16_nxv16i16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {913; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16f16_nxv16f16_nxv16i16:914; CHECK: # %bb.0: # %entry915; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu916; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t917; CHECK-NEXT: ret918entry:919 %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vv.mask.nxv16f16.iXLen(920 <vscale x 16 x half> %0,921 <vscale x 16 x half> %1,922 <vscale x 16 x i16> %2,923 <vscale x 16 x i1> %3,924 iXLen %4, iXLen 1)925 926 ret <vscale x 16 x half> %a927}928 929define <vscale x 32 x half> @intrinsic_vrgather_vv_nxv32f16_nxv32f16_nxv32i16(<vscale x 32 x half> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {930; CHECK-LABEL: intrinsic_vrgather_vv_nxv32f16_nxv32f16_nxv32i16:931; CHECK: # %bb.0: # %entry932; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma933; CHECK-NEXT: vrgather.vv v24, v8, v16934; CHECK-NEXT: vmv.v.v v8, v24935; CHECK-NEXT: ret936entry:937 %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vv.nxv32f16.iXLen(938 <vscale x 32 x half> poison,939 <vscale x 32 x half> %0,940 <vscale x 32 x i16> %1,941 iXLen %2)942 943 ret <vscale x 32 x half> %a944}945 946define <vscale x 32 x half> @intrinsic_vrgather_mask_vv_nxv32f16_nxv32f16_nxv32i16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {947; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32f16_nxv32f16_nxv32i16:948; CHECK: # %bb.0: # %entry949; CHECK-NEXT: vl8re16.v v24, (a0)950; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu951; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t952; CHECK-NEXT: ret953entry:954 %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vv.mask.nxv32f16.iXLen(955 <vscale x 32 x half> %0,956 <vscale x 32 x half> %1,957 <vscale x 32 x i16> %2,958 <vscale x 32 x i1> %3,959 iXLen %4, iXLen 1)960 961 ret <vscale x 32 x half> %a962}963 964define <vscale x 1 x float> @intrinsic_vrgather_vv_nxv1f32_nxv1f32_nxv1i32(<vscale x 1 x float> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {965; CHECK-LABEL: intrinsic_vrgather_vv_nxv1f32_nxv1f32_nxv1i32:966; CHECK: # %bb.0: # %entry967; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma968; CHECK-NEXT: vrgather.vv v10, v8, v9969; CHECK-NEXT: vmv1r.v v8, v10970; CHECK-NEXT: ret971entry:972 %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vv.nxv1f32.iXLen(973 <vscale x 1 x float> poison,974 <vscale x 1 x float> %0,975 <vscale x 1 x i32> %1,976 iXLen %2)977 978 ret <vscale x 1 x float> %a979}980 981define <vscale x 1 x float> @intrinsic_vrgather_mask_vv_nxv1f32_nxv1f32_nxv1i32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {982; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1f32_nxv1f32_nxv1i32:983; CHECK: # %bb.0: # %entry984; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu985; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t986; CHECK-NEXT: ret987entry:988 %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vv.mask.nxv1f32.iXLen(989 <vscale x 1 x float> %0,990 <vscale x 1 x float> %1,991 <vscale x 1 x i32> %2,992 <vscale x 1 x i1> %3,993 iXLen %4, iXLen 1)994 995 ret <vscale x 1 x float> %a996}997 998define <vscale x 2 x float> @intrinsic_vrgather_vv_nxv2f32_nxv2f32_nxv2i32(<vscale x 2 x float> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {999; CHECK-LABEL: intrinsic_vrgather_vv_nxv2f32_nxv2f32_nxv2i32:1000; CHECK: # %bb.0: # %entry1001; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma1002; CHECK-NEXT: vrgather.vv v10, v8, v91003; CHECK-NEXT: vmv.v.v v8, v101004; CHECK-NEXT: ret1005entry:1006 %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vv.nxv2f32.iXLen(1007 <vscale x 2 x float> poison,1008 <vscale x 2 x float> %0,1009 <vscale x 2 x i32> %1,1010 iXLen %2)1011 1012 ret <vscale x 2 x float> %a1013}1014 1015define <vscale x 2 x float> @intrinsic_vrgather_mask_vv_nxv2f32_nxv2f32_nxv2i32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {1016; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2f32_nxv2f32_nxv2i32:1017; CHECK: # %bb.0: # %entry1018; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu1019; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t1020; CHECK-NEXT: ret1021entry:1022 %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vv.mask.nxv2f32.iXLen(1023 <vscale x 2 x float> %0,1024 <vscale x 2 x float> %1,1025 <vscale x 2 x i32> %2,1026 <vscale x 2 x i1> %3,1027 iXLen %4, iXLen 1)1028 1029 ret <vscale x 2 x float> %a1030}1031 1032define <vscale x 4 x float> @intrinsic_vrgather_vv_nxv4f32_nxv4f32_nxv4i32(<vscale x 4 x float> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {1033; CHECK-LABEL: intrinsic_vrgather_vv_nxv4f32_nxv4f32_nxv4i32:1034; CHECK: # %bb.0: # %entry1035; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma1036; CHECK-NEXT: vrgather.vv v12, v8, v101037; CHECK-NEXT: vmv.v.v v8, v121038; CHECK-NEXT: ret1039entry:1040 %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vv.nxv4f32.iXLen(1041 <vscale x 4 x float> poison,1042 <vscale x 4 x float> %0,1043 <vscale x 4 x i32> %1,1044 iXLen %2)1045 1046 ret <vscale x 4 x float> %a1047}1048 1049define <vscale x 4 x float> @intrinsic_vrgather_mask_vv_nxv4f32_nxv4f32_nxv4i32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {1050; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4f32_nxv4f32_nxv4i32:1051; CHECK: # %bb.0: # %entry1052; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu1053; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t1054; CHECK-NEXT: ret1055entry:1056 %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vv.mask.nxv4f32.iXLen(1057 <vscale x 4 x float> %0,1058 <vscale x 4 x float> %1,1059 <vscale x 4 x i32> %2,1060 <vscale x 4 x i1> %3,1061 iXLen %4, iXLen 1)1062 1063 ret <vscale x 4 x float> %a1064}1065 1066define <vscale x 8 x float> @intrinsic_vrgather_vv_nxv8f32_nxv8f32_nxv8i32(<vscale x 8 x float> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {1067; CHECK-LABEL: intrinsic_vrgather_vv_nxv8f32_nxv8f32_nxv8i32:1068; CHECK: # %bb.0: # %entry1069; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma1070; CHECK-NEXT: vrgather.vv v16, v8, v121071; CHECK-NEXT: vmv.v.v v8, v161072; CHECK-NEXT: ret1073entry:1074 %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vv.nxv8f32.iXLen(1075 <vscale x 8 x float> poison,1076 <vscale x 8 x float> %0,1077 <vscale x 8 x i32> %1,1078 iXLen %2)1079 1080 ret <vscale x 8 x float> %a1081}1082 1083define <vscale x 8 x float> @intrinsic_vrgather_mask_vv_nxv8f32_nxv8f32_nxv8i32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {1084; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8f32_nxv8f32_nxv8i32:1085; CHECK: # %bb.0: # %entry1086; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu1087; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t1088; CHECK-NEXT: ret1089entry:1090 %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vv.mask.nxv8f32.iXLen(1091 <vscale x 8 x float> %0,1092 <vscale x 8 x float> %1,1093 <vscale x 8 x i32> %2,1094 <vscale x 8 x i1> %3,1095 iXLen %4, iXLen 1)1096 1097 ret <vscale x 8 x float> %a1098}1099 1100define <vscale x 16 x float> @intrinsic_vrgather_vv_nxv16f32_nxv16f32_nxv16i32(<vscale x 16 x float> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {1101; CHECK-LABEL: intrinsic_vrgather_vv_nxv16f32_nxv16f32_nxv16i32:1102; CHECK: # %bb.0: # %entry1103; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma1104; CHECK-NEXT: vrgather.vv v24, v8, v161105; CHECK-NEXT: vmv.v.v v8, v241106; CHECK-NEXT: ret1107entry:1108 %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vv.nxv16f32.iXLen(1109 <vscale x 16 x float> poison,1110 <vscale x 16 x float> %0,1111 <vscale x 16 x i32> %1,1112 iXLen %2)1113 1114 ret <vscale x 16 x float> %a1115}1116 1117define <vscale x 16 x float> @intrinsic_vrgather_mask_vv_nxv16f32_nxv16f32_nxv16i32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {1118; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16f32_nxv16f32_nxv16i32:1119; CHECK: # %bb.0: # %entry1120; CHECK-NEXT: vl8re32.v v24, (a0)1121; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu1122; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t1123; CHECK-NEXT: ret1124entry:1125 %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vv.mask.nxv16f32.iXLen(1126 <vscale x 16 x float> %0,1127 <vscale x 16 x float> %1,1128 <vscale x 16 x i32> %2,1129 <vscale x 16 x i1> %3,1130 iXLen %4, iXLen 1)1131 1132 ret <vscale x 16 x float> %a1133}1134 1135define <vscale x 1 x double> @intrinsic_vrgather_vv_nxv1f64_nxv1f64_nxv1i64(<vscale x 1 x double> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {1136; CHECK-LABEL: intrinsic_vrgather_vv_nxv1f64_nxv1f64_nxv1i64:1137; CHECK: # %bb.0: # %entry1138; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma1139; CHECK-NEXT: vrgather.vv v10, v8, v91140; CHECK-NEXT: vmv.v.v v8, v101141; CHECK-NEXT: ret1142entry:1143 %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vv.nxv1f64.iXLen(1144 <vscale x 1 x double> poison,1145 <vscale x 1 x double> %0,1146 <vscale x 1 x i64> %1,1147 iXLen %2)1148 1149 ret <vscale x 1 x double> %a1150}1151 1152define <vscale x 1 x double> @intrinsic_vrgather_mask_vv_nxv1f64_nxv1f64_nxv1i64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {1153; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1f64_nxv1f64_nxv1i64:1154; CHECK: # %bb.0: # %entry1155; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu1156; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t1157; CHECK-NEXT: ret1158entry:1159 %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vv.mask.nxv1f64.iXLen(1160 <vscale x 1 x double> %0,1161 <vscale x 1 x double> %1,1162 <vscale x 1 x i64> %2,1163 <vscale x 1 x i1> %3,1164 iXLen %4, iXLen 1)1165 1166 ret <vscale x 1 x double> %a1167}1168 1169define <vscale x 2 x double> @intrinsic_vrgather_vv_nxv2f64_nxv2f64_nxv2i64(<vscale x 2 x double> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {1170; CHECK-LABEL: intrinsic_vrgather_vv_nxv2f64_nxv2f64_nxv2i64:1171; CHECK: # %bb.0: # %entry1172; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma1173; CHECK-NEXT: vrgather.vv v12, v8, v101174; CHECK-NEXT: vmv.v.v v8, v121175; CHECK-NEXT: ret1176entry:1177 %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vv.nxv2f64.iXLen(1178 <vscale x 2 x double> poison,1179 <vscale x 2 x double> %0,1180 <vscale x 2 x i64> %1,1181 iXLen %2)1182 1183 ret <vscale x 2 x double> %a1184}1185 1186define <vscale x 2 x double> @intrinsic_vrgather_mask_vv_nxv2f64_nxv2f64_nxv2i64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {1187; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2f64_nxv2f64_nxv2i64:1188; CHECK: # %bb.0: # %entry1189; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu1190; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t1191; CHECK-NEXT: ret1192entry:1193 %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vv.mask.nxv2f64.iXLen(1194 <vscale x 2 x double> %0,1195 <vscale x 2 x double> %1,1196 <vscale x 2 x i64> %2,1197 <vscale x 2 x i1> %3,1198 iXLen %4, iXLen 1)1199 1200 ret <vscale x 2 x double> %a1201}1202 1203define <vscale x 4 x double> @intrinsic_vrgather_vv_nxv4f64_nxv4f64_nxv4i64(<vscale x 4 x double> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {1204; CHECK-LABEL: intrinsic_vrgather_vv_nxv4f64_nxv4f64_nxv4i64:1205; CHECK: # %bb.0: # %entry1206; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma1207; CHECK-NEXT: vrgather.vv v16, v8, v121208; CHECK-NEXT: vmv.v.v v8, v161209; CHECK-NEXT: ret1210entry:1211 %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vv.nxv4f64.iXLen(1212 <vscale x 4 x double> poison,1213 <vscale x 4 x double> %0,1214 <vscale x 4 x i64> %1,1215 iXLen %2)1216 1217 ret <vscale x 4 x double> %a1218}1219 1220define <vscale x 4 x double> @intrinsic_vrgather_mask_vv_nxv4f64_nxv4f64_nxv4i64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {1221; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4f64_nxv4f64_nxv4i64:1222; CHECK: # %bb.0: # %entry1223; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu1224; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t1225; CHECK-NEXT: ret1226entry:1227 %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vv.mask.nxv4f64.iXLen(1228 <vscale x 4 x double> %0,1229 <vscale x 4 x double> %1,1230 <vscale x 4 x i64> %2,1231 <vscale x 4 x i1> %3,1232 iXLen %4, iXLen 1)1233 1234 ret <vscale x 4 x double> %a1235}1236 1237define <vscale x 8 x double> @intrinsic_vrgather_vv_nxv8f64_nxv8f64_nxv8i64(<vscale x 8 x double> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {1238; CHECK-LABEL: intrinsic_vrgather_vv_nxv8f64_nxv8f64_nxv8i64:1239; CHECK: # %bb.0: # %entry1240; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma1241; CHECK-NEXT: vrgather.vv v24, v8, v161242; CHECK-NEXT: vmv.v.v v8, v241243; CHECK-NEXT: ret1244entry:1245 %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vv.nxv8f64.iXLen(1246 <vscale x 8 x double> poison,1247 <vscale x 8 x double> %0,1248 <vscale x 8 x i64> %1,1249 iXLen %2)1250 1251 ret <vscale x 8 x double> %a1252}1253 1254define <vscale x 8 x double> @intrinsic_vrgather_mask_vv_nxv8f64_nxv8f64_nxv8i64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {1255; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8f64_nxv8f64_nxv8i64:1256; CHECK: # %bb.0: # %entry1257; CHECK-NEXT: vl8re64.v v24, (a0)1258; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu1259; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t1260; CHECK-NEXT: ret1261entry:1262 %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vv.mask.nxv8f64.iXLen(1263 <vscale x 8 x double> %0,1264 <vscale x 8 x double> %1,1265 <vscale x 8 x i64> %2,1266 <vscale x 8 x i1> %3,1267 iXLen %4, iXLen 1)1268 1269 ret <vscale x 8 x double> %a1270}1271 1272define <vscale x 1 x i8> @intrinsic_vrgather_vx_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, iXLen %1, iXLen %2) nounwind {1273; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i8_nxv1i8:1274; CHECK: # %bb.0: # %entry1275; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma1276; CHECK-NEXT: vrgather.vx v9, v8, a01277; CHECK-NEXT: vmv1r.v v8, v91278; CHECK-NEXT: ret1279entry:1280 %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.nxv1i8.iXLen(1281 <vscale x 1 x i8> poison,1282 <vscale x 1 x i8> %0,1283 iXLen %1,1284 iXLen %2)1285 1286 ret <vscale x 1 x i8> %a1287}1288 1289define <vscale x 1 x i8> @intrinsic_vrgather_mask_vx_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {1290; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i8_nxv1i8:1291; CHECK: # %bb.0: # %entry1292; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, mu1293; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1294; CHECK-NEXT: ret1295entry:1296 %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.mask.nxv1i8.iXLen(1297 <vscale x 1 x i8> %0,1298 <vscale x 1 x i8> %1,1299 iXLen %2,1300 <vscale x 1 x i1> %3,1301 iXLen %4, iXLen 1)1302 1303 ret <vscale x 1 x i8> %a1304}1305 1306define <vscale x 2 x i8> @intrinsic_vrgather_vx_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, iXLen %1, iXLen %2) nounwind {1307; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i8_nxv2i8:1308; CHECK: # %bb.0: # %entry1309; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma1310; CHECK-NEXT: vrgather.vx v9, v8, a01311; CHECK-NEXT: vmv1r.v v8, v91312; CHECK-NEXT: ret1313entry:1314 %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.nxv2i8.iXLen(1315 <vscale x 2 x i8> poison,1316 <vscale x 2 x i8> %0,1317 iXLen %1,1318 iXLen %2)1319 1320 ret <vscale x 2 x i8> %a1321}1322 1323define <vscale x 2 x i8> @intrinsic_vrgather_mask_vx_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {1324; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i8_nxv2i8:1325; CHECK: # %bb.0: # %entry1326; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, mu1327; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1328; CHECK-NEXT: ret1329entry:1330 %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.mask.nxv2i8.iXLen(1331 <vscale x 2 x i8> %0,1332 <vscale x 2 x i8> %1,1333 iXLen %2,1334 <vscale x 2 x i1> %3,1335 iXLen %4, iXLen 1)1336 1337 ret <vscale x 2 x i8> %a1338}1339 1340define <vscale x 4 x i8> @intrinsic_vrgather_vx_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, iXLen %1, iXLen %2) nounwind {1341; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i8_nxv4i8:1342; CHECK: # %bb.0: # %entry1343; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma1344; CHECK-NEXT: vrgather.vx v9, v8, a01345; CHECK-NEXT: vmv1r.v v8, v91346; CHECK-NEXT: ret1347entry:1348 %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.nxv4i8.iXLen(1349 <vscale x 4 x i8> poison,1350 <vscale x 4 x i8> %0,1351 iXLen %1,1352 iXLen %2)1353 1354 ret <vscale x 4 x i8> %a1355}1356 1357define <vscale x 4 x i8> @intrinsic_vrgather_mask_vx_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {1358; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i8_nxv4i8:1359; CHECK: # %bb.0: # %entry1360; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, mu1361; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1362; CHECK-NEXT: ret1363entry:1364 %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.mask.nxv4i8.iXLen(1365 <vscale x 4 x i8> %0,1366 <vscale x 4 x i8> %1,1367 iXLen %2,1368 <vscale x 4 x i1> %3,1369 iXLen %4, iXLen 1)1370 1371 ret <vscale x 4 x i8> %a1372}1373 1374define <vscale x 8 x i8> @intrinsic_vrgather_vx_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, iXLen %1, iXLen %2) nounwind {1375; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i8_nxv8i8:1376; CHECK: # %bb.0: # %entry1377; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma1378; CHECK-NEXT: vrgather.vx v9, v8, a01379; CHECK-NEXT: vmv.v.v v8, v91380; CHECK-NEXT: ret1381entry:1382 %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.nxv8i8.iXLen(1383 <vscale x 8 x i8> poison,1384 <vscale x 8 x i8> %0,1385 iXLen %1,1386 iXLen %2)1387 1388 ret <vscale x 8 x i8> %a1389}1390 1391define <vscale x 8 x i8> @intrinsic_vrgather_mask_vx_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {1392; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i8_nxv8i8:1393; CHECK: # %bb.0: # %entry1394; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, mu1395; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1396; CHECK-NEXT: ret1397entry:1398 %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.mask.nxv8i8.iXLen(1399 <vscale x 8 x i8> %0,1400 <vscale x 8 x i8> %1,1401 iXLen %2,1402 <vscale x 8 x i1> %3,1403 iXLen %4, iXLen 1)1404 1405 ret <vscale x 8 x i8> %a1406}1407 1408define <vscale x 16 x i8> @intrinsic_vrgather_vx_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, iXLen %1, iXLen %2) nounwind {1409; CHECK-LABEL: intrinsic_vrgather_vx_nxv16i8_nxv16i8:1410; CHECK: # %bb.0: # %entry1411; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma1412; CHECK-NEXT: vrgather.vx v10, v8, a01413; CHECK-NEXT: vmv.v.v v8, v101414; CHECK-NEXT: ret1415entry:1416 %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.nxv16i8.iXLen(1417 <vscale x 16 x i8> poison,1418 <vscale x 16 x i8> %0,1419 iXLen %1,1420 iXLen %2)1421 1422 ret <vscale x 16 x i8> %a1423}1424 1425define <vscale x 16 x i8> @intrinsic_vrgather_mask_vx_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {1426; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16i8_nxv16i8:1427; CHECK: # %bb.0: # %entry1428; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, mu1429; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t1430; CHECK-NEXT: ret1431entry:1432 %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.mask.nxv16i8.iXLen(1433 <vscale x 16 x i8> %0,1434 <vscale x 16 x i8> %1,1435 iXLen %2,1436 <vscale x 16 x i1> %3,1437 iXLen %4, iXLen 1)1438 1439 ret <vscale x 16 x i8> %a1440}1441 1442define <vscale x 32 x i8> @intrinsic_vrgather_vx_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, iXLen %1, iXLen %2) nounwind {1443; CHECK-LABEL: intrinsic_vrgather_vx_nxv32i8_nxv32i8:1444; CHECK: # %bb.0: # %entry1445; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma1446; CHECK-NEXT: vrgather.vx v12, v8, a01447; CHECK-NEXT: vmv.v.v v8, v121448; CHECK-NEXT: ret1449entry:1450 %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.nxv32i8.iXLen(1451 <vscale x 32 x i8> poison,1452 <vscale x 32 x i8> %0,1453 iXLen %1,1454 iXLen %2)1455 1456 ret <vscale x 32 x i8> %a1457}1458 1459define <vscale x 32 x i8> @intrinsic_vrgather_mask_vx_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {1460; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32i8_nxv32i8:1461; CHECK: # %bb.0: # %entry1462; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, mu1463; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t1464; CHECK-NEXT: ret1465entry:1466 %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.mask.nxv32i8.iXLen(1467 <vscale x 32 x i8> %0,1468 <vscale x 32 x i8> %1,1469 iXLen %2,1470 <vscale x 32 x i1> %3,1471 iXLen %4, iXLen 1)1472 1473 ret <vscale x 32 x i8> %a1474}1475 1476define <vscale x 64 x i8> @intrinsic_vrgather_vx_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, iXLen %1, iXLen %2) nounwind {1477; CHECK-LABEL: intrinsic_vrgather_vx_nxv64i8_nxv64i8:1478; CHECK: # %bb.0: # %entry1479; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma1480; CHECK-NEXT: vrgather.vx v16, v8, a01481; CHECK-NEXT: vmv.v.v v8, v161482; CHECK-NEXT: ret1483entry:1484 %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.nxv64i8.iXLen(1485 <vscale x 64 x i8> poison,1486 <vscale x 64 x i8> %0,1487 iXLen %1,1488 iXLen %2)1489 1490 ret <vscale x 64 x i8> %a1491}1492 1493define <vscale x 64 x i8> @intrinsic_vrgather_mask_vx_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {1494; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv64i8_nxv64i8:1495; CHECK: # %bb.0: # %entry1496; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, mu1497; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t1498; CHECK-NEXT: ret1499entry:1500 %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.mask.nxv64i8.iXLen(1501 <vscale x 64 x i8> %0,1502 <vscale x 64 x i8> %1,1503 iXLen %2,1504 <vscale x 64 x i1> %3,1505 iXLen %4, iXLen 1)1506 1507 ret <vscale x 64 x i8> %a1508}1509 1510define <vscale x 1 x i16> @intrinsic_vrgather_vx_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, iXLen %1, iXLen %2) nounwind {1511; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i16_nxv1i16:1512; CHECK: # %bb.0: # %entry1513; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma1514; CHECK-NEXT: vrgather.vx v9, v8, a01515; CHECK-NEXT: vmv1r.v v8, v91516; CHECK-NEXT: ret1517entry:1518 %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.nxv1i16.iXLen(1519 <vscale x 1 x i16> poison,1520 <vscale x 1 x i16> %0,1521 iXLen %1,1522 iXLen %2)1523 1524 ret <vscale x 1 x i16> %a1525}1526 1527define <vscale x 1 x i16> @intrinsic_vrgather_mask_vx_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {1528; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i16_nxv1i16:1529; CHECK: # %bb.0: # %entry1530; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu1531; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1532; CHECK-NEXT: ret1533entry:1534 %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.mask.nxv1i16.iXLen(1535 <vscale x 1 x i16> %0,1536 <vscale x 1 x i16> %1,1537 iXLen %2,1538 <vscale x 1 x i1> %3,1539 iXLen %4, iXLen 1)1540 1541 ret <vscale x 1 x i16> %a1542}1543 1544define <vscale x 2 x i16> @intrinsic_vrgather_vx_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, iXLen %1, iXLen %2) nounwind {1545; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i16_nxv2i16:1546; CHECK: # %bb.0: # %entry1547; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma1548; CHECK-NEXT: vrgather.vx v9, v8, a01549; CHECK-NEXT: vmv1r.v v8, v91550; CHECK-NEXT: ret1551entry:1552 %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.nxv2i16.iXLen(1553 <vscale x 2 x i16> poison,1554 <vscale x 2 x i16> %0,1555 iXLen %1,1556 iXLen %2)1557 1558 ret <vscale x 2 x i16> %a1559}1560 1561define <vscale x 2 x i16> @intrinsic_vrgather_mask_vx_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {1562; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i16_nxv2i16:1563; CHECK: # %bb.0: # %entry1564; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu1565; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1566; CHECK-NEXT: ret1567entry:1568 %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.mask.nxv2i16.iXLen(1569 <vscale x 2 x i16> %0,1570 <vscale x 2 x i16> %1,1571 iXLen %2,1572 <vscale x 2 x i1> %3,1573 iXLen %4, iXLen 1)1574 1575 ret <vscale x 2 x i16> %a1576}1577 1578define <vscale x 4 x i16> @intrinsic_vrgather_vx_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, iXLen %1, iXLen %2) nounwind {1579; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i16_nxv4i16:1580; CHECK: # %bb.0: # %entry1581; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma1582; CHECK-NEXT: vrgather.vx v9, v8, a01583; CHECK-NEXT: vmv.v.v v8, v91584; CHECK-NEXT: ret1585entry:1586 %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.nxv4i16.iXLen(1587 <vscale x 4 x i16> poison,1588 <vscale x 4 x i16> %0,1589 iXLen %1,1590 iXLen %2)1591 1592 ret <vscale x 4 x i16> %a1593}1594 1595define <vscale x 4 x i16> @intrinsic_vrgather_mask_vx_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {1596; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i16_nxv4i16:1597; CHECK: # %bb.0: # %entry1598; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu1599; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1600; CHECK-NEXT: ret1601entry:1602 %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.mask.nxv4i16.iXLen(1603 <vscale x 4 x i16> %0,1604 <vscale x 4 x i16> %1,1605 iXLen %2,1606 <vscale x 4 x i1> %3,1607 iXLen %4, iXLen 1)1608 1609 ret <vscale x 4 x i16> %a1610}1611 1612define <vscale x 8 x i16> @intrinsic_vrgather_vx_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, iXLen %1, iXLen %2) nounwind {1613; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i16_nxv8i16:1614; CHECK: # %bb.0: # %entry1615; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma1616; CHECK-NEXT: vrgather.vx v10, v8, a01617; CHECK-NEXT: vmv.v.v v8, v101618; CHECK-NEXT: ret1619entry:1620 %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.nxv8i16.iXLen(1621 <vscale x 8 x i16> poison,1622 <vscale x 8 x i16> %0,1623 iXLen %1,1624 iXLen %2)1625 1626 ret <vscale x 8 x i16> %a1627}1628 1629define <vscale x 8 x i16> @intrinsic_vrgather_mask_vx_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {1630; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i16_nxv8i16:1631; CHECK: # %bb.0: # %entry1632; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu1633; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t1634; CHECK-NEXT: ret1635entry:1636 %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.mask.nxv8i16.iXLen(1637 <vscale x 8 x i16> %0,1638 <vscale x 8 x i16> %1,1639 iXLen %2,1640 <vscale x 8 x i1> %3,1641 iXLen %4, iXLen 1)1642 1643 ret <vscale x 8 x i16> %a1644}1645 1646define <vscale x 16 x i16> @intrinsic_vrgather_vx_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, iXLen %1, iXLen %2) nounwind {1647; CHECK-LABEL: intrinsic_vrgather_vx_nxv16i16_nxv16i16:1648; CHECK: # %bb.0: # %entry1649; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma1650; CHECK-NEXT: vrgather.vx v12, v8, a01651; CHECK-NEXT: vmv.v.v v8, v121652; CHECK-NEXT: ret1653entry:1654 %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.nxv16i16.iXLen(1655 <vscale x 16 x i16> poison,1656 <vscale x 16 x i16> %0,1657 iXLen %1,1658 iXLen %2)1659 1660 ret <vscale x 16 x i16> %a1661}1662 1663define <vscale x 16 x i16> @intrinsic_vrgather_mask_vx_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {1664; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16i16_nxv16i16:1665; CHECK: # %bb.0: # %entry1666; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu1667; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t1668; CHECK-NEXT: ret1669entry:1670 %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.mask.nxv16i16.iXLen(1671 <vscale x 16 x i16> %0,1672 <vscale x 16 x i16> %1,1673 iXLen %2,1674 <vscale x 16 x i1> %3,1675 iXLen %4, iXLen 1)1676 1677 ret <vscale x 16 x i16> %a1678}1679 1680define <vscale x 32 x i16> @intrinsic_vrgather_vx_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, iXLen %1, iXLen %2) nounwind {1681; CHECK-LABEL: intrinsic_vrgather_vx_nxv32i16_nxv32i16:1682; CHECK: # %bb.0: # %entry1683; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma1684; CHECK-NEXT: vrgather.vx v16, v8, a01685; CHECK-NEXT: vmv.v.v v8, v161686; CHECK-NEXT: ret1687entry:1688 %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.nxv32i16.iXLen(1689 <vscale x 32 x i16> poison,1690 <vscale x 32 x i16> %0,1691 iXLen %1,1692 iXLen %2)1693 1694 ret <vscale x 32 x i16> %a1695}1696 1697define <vscale x 32 x i16> @intrinsic_vrgather_mask_vx_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {1698; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32i16_nxv32i16:1699; CHECK: # %bb.0: # %entry1700; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu1701; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t1702; CHECK-NEXT: ret1703entry:1704 %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.mask.nxv32i16.iXLen(1705 <vscale x 32 x i16> %0,1706 <vscale x 32 x i16> %1,1707 iXLen %2,1708 <vscale x 32 x i1> %3,1709 iXLen %4, iXLen 1)1710 1711 ret <vscale x 32 x i16> %a1712}1713 1714define <vscale x 1 x i32> @intrinsic_vrgather_vx_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, iXLen %1, iXLen %2) nounwind {1715; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i32_nxv1i32:1716; CHECK: # %bb.0: # %entry1717; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma1718; CHECK-NEXT: vrgather.vx v9, v8, a01719; CHECK-NEXT: vmv1r.v v8, v91720; CHECK-NEXT: ret1721entry:1722 %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.nxv1i32.iXLen(1723 <vscale x 1 x i32> poison,1724 <vscale x 1 x i32> %0,1725 iXLen %1,1726 iXLen %2)1727 1728 ret <vscale x 1 x i32> %a1729}1730 1731define <vscale x 1 x i32> @intrinsic_vrgather_mask_vx_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {1732; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i32_nxv1i32:1733; CHECK: # %bb.0: # %entry1734; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu1735; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1736; CHECK-NEXT: ret1737entry:1738 %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.mask.nxv1i32.iXLen(1739 <vscale x 1 x i32> %0,1740 <vscale x 1 x i32> %1,1741 iXLen %2,1742 <vscale x 1 x i1> %3,1743 iXLen %4, iXLen 1)1744 1745 ret <vscale x 1 x i32> %a1746}1747 1748define <vscale x 2 x i32> @intrinsic_vrgather_vx_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, iXLen %1, iXLen %2) nounwind {1749; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i32_nxv2i32:1750; CHECK: # %bb.0: # %entry1751; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma1752; CHECK-NEXT: vrgather.vx v9, v8, a01753; CHECK-NEXT: vmv.v.v v8, v91754; CHECK-NEXT: ret1755entry:1756 %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.nxv2i32.iXLen(1757 <vscale x 2 x i32> poison,1758 <vscale x 2 x i32> %0,1759 iXLen %1,1760 iXLen %2)1761 1762 ret <vscale x 2 x i32> %a1763}1764 1765define <vscale x 2 x i32> @intrinsic_vrgather_mask_vx_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {1766; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i32_nxv2i32:1767; CHECK: # %bb.0: # %entry1768; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu1769; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1770; CHECK-NEXT: ret1771entry:1772 %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.mask.nxv2i32.iXLen(1773 <vscale x 2 x i32> %0,1774 <vscale x 2 x i32> %1,1775 iXLen %2,1776 <vscale x 2 x i1> %3,1777 iXLen %4, iXLen 1)1778 1779 ret <vscale x 2 x i32> %a1780}1781 1782define <vscale x 4 x i32> @intrinsic_vrgather_vx_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, iXLen %1, iXLen %2) nounwind {1783; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i32_nxv4i32:1784; CHECK: # %bb.0: # %entry1785; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma1786; CHECK-NEXT: vrgather.vx v10, v8, a01787; CHECK-NEXT: vmv.v.v v8, v101788; CHECK-NEXT: ret1789entry:1790 %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.nxv4i32.iXLen(1791 <vscale x 4 x i32> poison,1792 <vscale x 4 x i32> %0,1793 iXLen %1,1794 iXLen %2)1795 1796 ret <vscale x 4 x i32> %a1797}1798 1799define <vscale x 4 x i32> @intrinsic_vrgather_mask_vx_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {1800; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i32_nxv4i32:1801; CHECK: # %bb.0: # %entry1802; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu1803; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t1804; CHECK-NEXT: ret1805entry:1806 %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.mask.nxv4i32.iXLen(1807 <vscale x 4 x i32> %0,1808 <vscale x 4 x i32> %1,1809 iXLen %2,1810 <vscale x 4 x i1> %3,1811 iXLen %4, iXLen 1)1812 1813 ret <vscale x 4 x i32> %a1814}1815 1816define <vscale x 8 x i32> @intrinsic_vrgather_vx_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, iXLen %1, iXLen %2) nounwind {1817; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i32_nxv8i32:1818; CHECK: # %bb.0: # %entry1819; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma1820; CHECK-NEXT: vrgather.vx v12, v8, a01821; CHECK-NEXT: vmv.v.v v8, v121822; CHECK-NEXT: ret1823entry:1824 %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.nxv8i32.iXLen(1825 <vscale x 8 x i32> poison,1826 <vscale x 8 x i32> %0,1827 iXLen %1,1828 iXLen %2)1829 1830 ret <vscale x 8 x i32> %a1831}1832 1833define <vscale x 8 x i32> @intrinsic_vrgather_mask_vx_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {1834; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i32_nxv8i32:1835; CHECK: # %bb.0: # %entry1836; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu1837; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t1838; CHECK-NEXT: ret1839entry:1840 %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.mask.nxv8i32.iXLen(1841 <vscale x 8 x i32> %0,1842 <vscale x 8 x i32> %1,1843 iXLen %2,1844 <vscale x 8 x i1> %3,1845 iXLen %4, iXLen 1)1846 1847 ret <vscale x 8 x i32> %a1848}1849 1850define <vscale x 16 x i32> @intrinsic_vrgather_vx_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, iXLen %1, iXLen %2) nounwind {1851; CHECK-LABEL: intrinsic_vrgather_vx_nxv16i32_nxv16i32:1852; CHECK: # %bb.0: # %entry1853; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma1854; CHECK-NEXT: vrgather.vx v16, v8, a01855; CHECK-NEXT: vmv.v.v v8, v161856; CHECK-NEXT: ret1857entry:1858 %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.nxv16i32.iXLen(1859 <vscale x 16 x i32> poison,1860 <vscale x 16 x i32> %0,1861 iXLen %1,1862 iXLen %2)1863 1864 ret <vscale x 16 x i32> %a1865}1866 1867define <vscale x 16 x i32> @intrinsic_vrgather_mask_vx_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {1868; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16i32_nxv16i32:1869; CHECK: # %bb.0: # %entry1870; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu1871; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t1872; CHECK-NEXT: ret1873entry:1874 %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.mask.nxv16i32.iXLen(1875 <vscale x 16 x i32> %0,1876 <vscale x 16 x i32> %1,1877 iXLen %2,1878 <vscale x 16 x i1> %3,1879 iXLen %4, iXLen 1)1880 1881 ret <vscale x 16 x i32> %a1882}1883 1884define <vscale x 1 x i64> @intrinsic_vrgather_vx_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, iXLen %1, iXLen %2) nounwind {1885; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i64_nxv1i64:1886; CHECK: # %bb.0: # %entry1887; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma1888; CHECK-NEXT: vrgather.vx v9, v8, a01889; CHECK-NEXT: vmv.v.v v8, v91890; CHECK-NEXT: ret1891entry:1892 %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.nxv1i64.iXLen(1893 <vscale x 1 x i64> poison,1894 <vscale x 1 x i64> %0,1895 iXLen %1,1896 iXLen %2)1897 1898 ret <vscale x 1 x i64> %a1899}1900 1901define <vscale x 1 x i64> @intrinsic_vrgather_mask_vx_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {1902; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i64_nxv1i64:1903; CHECK: # %bb.0: # %entry1904; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu1905; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t1906; CHECK-NEXT: ret1907entry:1908 %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.mask.nxv1i64.iXLen(1909 <vscale x 1 x i64> %0,1910 <vscale x 1 x i64> %1,1911 iXLen %2,1912 <vscale x 1 x i1> %3,1913 iXLen %4, iXLen 1)1914 1915 ret <vscale x 1 x i64> %a1916}1917 1918define <vscale x 2 x i64> @intrinsic_vrgather_vx_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, iXLen %1, iXLen %2) nounwind {1919; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i64_nxv2i64:1920; CHECK: # %bb.0: # %entry1921; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma1922; CHECK-NEXT: vrgather.vx v10, v8, a01923; CHECK-NEXT: vmv.v.v v8, v101924; CHECK-NEXT: ret1925entry:1926 %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.nxv2i64.iXLen(1927 <vscale x 2 x i64> poison,1928 <vscale x 2 x i64> %0,1929 iXLen %1,1930 iXLen %2)1931 1932 ret <vscale x 2 x i64> %a1933}1934 1935define <vscale x 2 x i64> @intrinsic_vrgather_mask_vx_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {1936; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i64_nxv2i64:1937; CHECK: # %bb.0: # %entry1938; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu1939; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t1940; CHECK-NEXT: ret1941entry:1942 %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.mask.nxv2i64.iXLen(1943 <vscale x 2 x i64> %0,1944 <vscale x 2 x i64> %1,1945 iXLen %2,1946 <vscale x 2 x i1> %3,1947 iXLen %4, iXLen 1)1948 1949 ret <vscale x 2 x i64> %a1950}1951 1952define <vscale x 4 x i64> @intrinsic_vrgather_vx_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, iXLen %1, iXLen %2) nounwind {1953; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i64_nxv4i64:1954; CHECK: # %bb.0: # %entry1955; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma1956; CHECK-NEXT: vrgather.vx v12, v8, a01957; CHECK-NEXT: vmv.v.v v8, v121958; CHECK-NEXT: ret1959entry:1960 %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.nxv4i64.iXLen(1961 <vscale x 4 x i64> poison,1962 <vscale x 4 x i64> %0,1963 iXLen %1,1964 iXLen %2)1965 1966 ret <vscale x 4 x i64> %a1967}1968 1969define <vscale x 4 x i64> @intrinsic_vrgather_mask_vx_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {1970; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i64_nxv4i64:1971; CHECK: # %bb.0: # %entry1972; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu1973; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t1974; CHECK-NEXT: ret1975entry:1976 %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.mask.nxv4i64.iXLen(1977 <vscale x 4 x i64> %0,1978 <vscale x 4 x i64> %1,1979 iXLen %2,1980 <vscale x 4 x i1> %3,1981 iXLen %4, iXLen 1)1982 1983 ret <vscale x 4 x i64> %a1984}1985 1986define <vscale x 8 x i64> @intrinsic_vrgather_vx_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, iXLen %1, iXLen %2) nounwind {1987; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i64_nxv8i64:1988; CHECK: # %bb.0: # %entry1989; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma1990; CHECK-NEXT: vrgather.vx v16, v8, a01991; CHECK-NEXT: vmv.v.v v8, v161992; CHECK-NEXT: ret1993entry:1994 %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.nxv8i64.iXLen(1995 <vscale x 8 x i64> poison,1996 <vscale x 8 x i64> %0,1997 iXLen %1,1998 iXLen %2)1999 2000 ret <vscale x 8 x i64> %a2001}2002 2003define <vscale x 8 x i64> @intrinsic_vrgather_mask_vx_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {2004; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i64_nxv8i64:2005; CHECK: # %bb.0: # %entry2006; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu2007; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t2008; CHECK-NEXT: ret2009entry:2010 %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.mask.nxv8i64.iXLen(2011 <vscale x 8 x i64> %0,2012 <vscale x 8 x i64> %1,2013 iXLen %2,2014 <vscale x 8 x i1> %3,2015 iXLen %4, iXLen 1)2016 2017 ret <vscale x 8 x i64> %a2018}2019 2020define <vscale x 1 x half> @intrinsic_vrgather_vx_nxv1f16_nxv1f16(<vscale x 1 x half> %0, iXLen %1, iXLen %2) nounwind {2021; CHECK-LABEL: intrinsic_vrgather_vx_nxv1f16_nxv1f16:2022; CHECK: # %bb.0: # %entry2023; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma2024; CHECK-NEXT: vrgather.vx v9, v8, a02025; CHECK-NEXT: vmv1r.v v8, v92026; CHECK-NEXT: ret2027entry:2028 %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.nxv1f16.iXLen(2029 <vscale x 1 x half> poison,2030 <vscale x 1 x half> %0,2031 iXLen %1,2032 iXLen %2)2033 2034 ret <vscale x 1 x half> %a2035}2036 2037define <vscale x 1 x half> @intrinsic_vrgather_mask_vx_nxv1f16_nxv1f16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {2038; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1f16_nxv1f16:2039; CHECK: # %bb.0: # %entry2040; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu2041; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t2042; CHECK-NEXT: ret2043entry:2044 %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.mask.nxv1f16.iXLen(2045 <vscale x 1 x half> %0,2046 <vscale x 1 x half> %1,2047 iXLen %2,2048 <vscale x 1 x i1> %3,2049 iXLen %4, iXLen 1)2050 2051 ret <vscale x 1 x half> %a2052}2053 2054define <vscale x 2 x half> @intrinsic_vrgather_vx_nxv2f16_nxv2f16(<vscale x 2 x half> %0, iXLen %1, iXLen %2) nounwind {2055; CHECK-LABEL: intrinsic_vrgather_vx_nxv2f16_nxv2f16:2056; CHECK: # %bb.0: # %entry2057; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma2058; CHECK-NEXT: vrgather.vx v9, v8, a02059; CHECK-NEXT: vmv1r.v v8, v92060; CHECK-NEXT: ret2061entry:2062 %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.nxv2f16.iXLen(2063 <vscale x 2 x half> poison,2064 <vscale x 2 x half> %0,2065 iXLen %1,2066 iXLen %2)2067 2068 ret <vscale x 2 x half> %a2069}2070 2071define <vscale x 2 x half> @intrinsic_vrgather_mask_vx_nxv2f16_nxv2f16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {2072; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2f16_nxv2f16:2073; CHECK: # %bb.0: # %entry2074; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu2075; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t2076; CHECK-NEXT: ret2077entry:2078 %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.mask.nxv2f16.iXLen(2079 <vscale x 2 x half> %0,2080 <vscale x 2 x half> %1,2081 iXLen %2,2082 <vscale x 2 x i1> %3,2083 iXLen %4, iXLen 1)2084 2085 ret <vscale x 2 x half> %a2086}2087 2088define <vscale x 4 x half> @intrinsic_vrgather_vx_nxv4f16_nxv4f16(<vscale x 4 x half> %0, iXLen %1, iXLen %2) nounwind {2089; CHECK-LABEL: intrinsic_vrgather_vx_nxv4f16_nxv4f16:2090; CHECK: # %bb.0: # %entry2091; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma2092; CHECK-NEXT: vrgather.vx v9, v8, a02093; CHECK-NEXT: vmv.v.v v8, v92094; CHECK-NEXT: ret2095entry:2096 %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.nxv4f16.iXLen(2097 <vscale x 4 x half> poison,2098 <vscale x 4 x half> %0,2099 iXLen %1,2100 iXLen %2)2101 2102 ret <vscale x 4 x half> %a2103}2104 2105define <vscale x 4 x half> @intrinsic_vrgather_mask_vx_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {2106; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4f16_nxv4f16:2107; CHECK: # %bb.0: # %entry2108; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu2109; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t2110; CHECK-NEXT: ret2111entry:2112 %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.mask.nxv4f16.iXLen(2113 <vscale x 4 x half> %0,2114 <vscale x 4 x half> %1,2115 iXLen %2,2116 <vscale x 4 x i1> %3,2117 iXLen %4, iXLen 1)2118 2119 ret <vscale x 4 x half> %a2120}2121 2122define <vscale x 8 x half> @intrinsic_vrgather_vx_nxv8f16_nxv8f16(<vscale x 8 x half> %0, iXLen %1, iXLen %2) nounwind {2123; CHECK-LABEL: intrinsic_vrgather_vx_nxv8f16_nxv8f16:2124; CHECK: # %bb.0: # %entry2125; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma2126; CHECK-NEXT: vrgather.vx v10, v8, a02127; CHECK-NEXT: vmv.v.v v8, v102128; CHECK-NEXT: ret2129entry:2130 %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.nxv8f16.iXLen(2131 <vscale x 8 x half> poison,2132 <vscale x 8 x half> %0,2133 iXLen %1,2134 iXLen %2)2135 2136 ret <vscale x 8 x half> %a2137}2138 2139define <vscale x 8 x half> @intrinsic_vrgather_mask_vx_nxv8f16_nxv8f16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {2140; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8f16_nxv8f16:2141; CHECK: # %bb.0: # %entry2142; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu2143; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t2144; CHECK-NEXT: ret2145entry:2146 %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.mask.nxv8f16.iXLen(2147 <vscale x 8 x half> %0,2148 <vscale x 8 x half> %1,2149 iXLen %2,2150 <vscale x 8 x i1> %3,2151 iXLen %4, iXLen 1)2152 2153 ret <vscale x 8 x half> %a2154}2155 2156define <vscale x 16 x half> @intrinsic_vrgather_vx_nxv16f16_nxv16f16(<vscale x 16 x half> %0, iXLen %1, iXLen %2) nounwind {2157; CHECK-LABEL: intrinsic_vrgather_vx_nxv16f16_nxv16f16:2158; CHECK: # %bb.0: # %entry2159; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma2160; CHECK-NEXT: vrgather.vx v12, v8, a02161; CHECK-NEXT: vmv.v.v v8, v122162; CHECK-NEXT: ret2163entry:2164 %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.nxv16f16.iXLen(2165 <vscale x 16 x half> poison,2166 <vscale x 16 x half> %0,2167 iXLen %1,2168 iXLen %2)2169 2170 ret <vscale x 16 x half> %a2171}2172 2173define <vscale x 16 x half> @intrinsic_vrgather_mask_vx_nxv16f16_nxv16f16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {2174; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16f16_nxv16f16:2175; CHECK: # %bb.0: # %entry2176; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu2177; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t2178; CHECK-NEXT: ret2179entry:2180 %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.mask.nxv16f16.iXLen(2181 <vscale x 16 x half> %0,2182 <vscale x 16 x half> %1,2183 iXLen %2,2184 <vscale x 16 x i1> %3,2185 iXLen %4, iXLen 1)2186 2187 ret <vscale x 16 x half> %a2188}2189 2190define <vscale x 32 x half> @intrinsic_vrgather_vx_nxv32f16_nxv32f16(<vscale x 32 x half> %0, iXLen %1, iXLen %2) nounwind {2191; CHECK-LABEL: intrinsic_vrgather_vx_nxv32f16_nxv32f16:2192; CHECK: # %bb.0: # %entry2193; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma2194; CHECK-NEXT: vrgather.vx v16, v8, a02195; CHECK-NEXT: vmv.v.v v8, v162196; CHECK-NEXT: ret2197entry:2198 %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.nxv32f16.iXLen(2199 <vscale x 32 x half> poison,2200 <vscale x 32 x half> %0,2201 iXLen %1,2202 iXLen %2)2203 2204 ret <vscale x 32 x half> %a2205}2206 2207define <vscale x 32 x half> @intrinsic_vrgather_mask_vx_nxv32f16_nxv32f16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {2208; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32f16_nxv32f16:2209; CHECK: # %bb.0: # %entry2210; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu2211; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t2212; CHECK-NEXT: ret2213entry:2214 %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.mask.nxv32f16.iXLen(2215 <vscale x 32 x half> %0,2216 <vscale x 32 x half> %1,2217 iXLen %2,2218 <vscale x 32 x i1> %3,2219 iXLen %4, iXLen 1)2220 2221 ret <vscale x 32 x half> %a2222}2223 2224define <vscale x 1 x float> @intrinsic_vrgather_vx_nxv1f32_nxv1f32(<vscale x 1 x float> %0, iXLen %1, iXLen %2) nounwind {2225; CHECK-LABEL: intrinsic_vrgather_vx_nxv1f32_nxv1f32:2226; CHECK: # %bb.0: # %entry2227; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma2228; CHECK-NEXT: vrgather.vx v9, v8, a02229; CHECK-NEXT: vmv1r.v v8, v92230; CHECK-NEXT: ret2231entry:2232 %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.nxv1f32.iXLen(2233 <vscale x 1 x float> poison,2234 <vscale x 1 x float> %0,2235 iXLen %1,2236 iXLen %2)2237 2238 ret <vscale x 1 x float> %a2239}2240 2241define <vscale x 1 x float> @intrinsic_vrgather_mask_vx_nxv1f32_nxv1f32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {2242; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1f32_nxv1f32:2243; CHECK: # %bb.0: # %entry2244; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, mu2245; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t2246; CHECK-NEXT: ret2247entry:2248 %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.mask.nxv1f32.iXLen(2249 <vscale x 1 x float> %0,2250 <vscale x 1 x float> %1,2251 iXLen %2,2252 <vscale x 1 x i1> %3,2253 iXLen %4, iXLen 1)2254 2255 ret <vscale x 1 x float> %a2256}2257 2258define <vscale x 2 x float> @intrinsic_vrgather_vx_nxv2f32_nxv2f32(<vscale x 2 x float> %0, iXLen %1, iXLen %2) nounwind {2259; CHECK-LABEL: intrinsic_vrgather_vx_nxv2f32_nxv2f32:2260; CHECK: # %bb.0: # %entry2261; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma2262; CHECK-NEXT: vrgather.vx v9, v8, a02263; CHECK-NEXT: vmv.v.v v8, v92264; CHECK-NEXT: ret2265entry:2266 %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.nxv2f32.iXLen(2267 <vscale x 2 x float> poison,2268 <vscale x 2 x float> %0,2269 iXLen %1,2270 iXLen %2)2271 2272 ret <vscale x 2 x float> %a2273}2274 2275define <vscale x 2 x float> @intrinsic_vrgather_mask_vx_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {2276; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2f32_nxv2f32:2277; CHECK: # %bb.0: # %entry2278; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, mu2279; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t2280; CHECK-NEXT: ret2281entry:2282 %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.mask.nxv2f32.iXLen(2283 <vscale x 2 x float> %0,2284 <vscale x 2 x float> %1,2285 iXLen %2,2286 <vscale x 2 x i1> %3,2287 iXLen %4, iXLen 1)2288 2289 ret <vscale x 2 x float> %a2290}2291 2292define <vscale x 4 x float> @intrinsic_vrgather_vx_nxv4f32_nxv4f32(<vscale x 4 x float> %0, iXLen %1, iXLen %2) nounwind {2293; CHECK-LABEL: intrinsic_vrgather_vx_nxv4f32_nxv4f32:2294; CHECK: # %bb.0: # %entry2295; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma2296; CHECK-NEXT: vrgather.vx v10, v8, a02297; CHECK-NEXT: vmv.v.v v8, v102298; CHECK-NEXT: ret2299entry:2300 %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.nxv4f32.iXLen(2301 <vscale x 4 x float> poison,2302 <vscale x 4 x float> %0,2303 iXLen %1,2304 iXLen %2)2305 2306 ret <vscale x 4 x float> %a2307}2308 2309define <vscale x 4 x float> @intrinsic_vrgather_mask_vx_nxv4f32_nxv4f32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {2310; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4f32_nxv4f32:2311; CHECK: # %bb.0: # %entry2312; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, mu2313; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t2314; CHECK-NEXT: ret2315entry:2316 %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.mask.nxv4f32.iXLen(2317 <vscale x 4 x float> %0,2318 <vscale x 4 x float> %1,2319 iXLen %2,2320 <vscale x 4 x i1> %3,2321 iXLen %4, iXLen 1)2322 2323 ret <vscale x 4 x float> %a2324}2325 2326define <vscale x 8 x float> @intrinsic_vrgather_vx_nxv8f32_nxv8f32(<vscale x 8 x float> %0, iXLen %1, iXLen %2) nounwind {2327; CHECK-LABEL: intrinsic_vrgather_vx_nxv8f32_nxv8f32:2328; CHECK: # %bb.0: # %entry2329; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma2330; CHECK-NEXT: vrgather.vx v12, v8, a02331; CHECK-NEXT: vmv.v.v v8, v122332; CHECK-NEXT: ret2333entry:2334 %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.nxv8f32.iXLen(2335 <vscale x 8 x float> poison,2336 <vscale x 8 x float> %0,2337 iXLen %1,2338 iXLen %2)2339 2340 ret <vscale x 8 x float> %a2341}2342 2343define <vscale x 8 x float> @intrinsic_vrgather_mask_vx_nxv8f32_nxv8f32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {2344; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8f32_nxv8f32:2345; CHECK: # %bb.0: # %entry2346; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, mu2347; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t2348; CHECK-NEXT: ret2349entry:2350 %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.mask.nxv8f32.iXLen(2351 <vscale x 8 x float> %0,2352 <vscale x 8 x float> %1,2353 iXLen %2,2354 <vscale x 8 x i1> %3,2355 iXLen %4, iXLen 1)2356 2357 ret <vscale x 8 x float> %a2358}2359 2360define <vscale x 16 x float> @intrinsic_vrgather_vx_nxv16f32_nxv16f32(<vscale x 16 x float> %0, iXLen %1, iXLen %2) nounwind {2361; CHECK-LABEL: intrinsic_vrgather_vx_nxv16f32_nxv16f32:2362; CHECK: # %bb.0: # %entry2363; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma2364; CHECK-NEXT: vrgather.vx v16, v8, a02365; CHECK-NEXT: vmv.v.v v8, v162366; CHECK-NEXT: ret2367entry:2368 %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.nxv16f32.iXLen(2369 <vscale x 16 x float> poison,2370 <vscale x 16 x float> %0,2371 iXLen %1,2372 iXLen %2)2373 2374 ret <vscale x 16 x float> %a2375}2376 2377define <vscale x 16 x float> @intrinsic_vrgather_mask_vx_nxv16f32_nxv16f32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {2378; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16f32_nxv16f32:2379; CHECK: # %bb.0: # %entry2380; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, mu2381; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t2382; CHECK-NEXT: ret2383entry:2384 %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.mask.nxv16f32.iXLen(2385 <vscale x 16 x float> %0,2386 <vscale x 16 x float> %1,2387 iXLen %2,2388 <vscale x 16 x i1> %3,2389 iXLen %4, iXLen 1)2390 2391 ret <vscale x 16 x float> %a2392}2393 2394define <vscale x 1 x double> @intrinsic_vrgather_vx_nxv1f64_nxv1f64(<vscale x 1 x double> %0, iXLen %1, iXLen %2) nounwind {2395; CHECK-LABEL: intrinsic_vrgather_vx_nxv1f64_nxv1f64:2396; CHECK: # %bb.0: # %entry2397; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma2398; CHECK-NEXT: vrgather.vx v9, v8, a02399; CHECK-NEXT: vmv.v.v v8, v92400; CHECK-NEXT: ret2401entry:2402 %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.nxv1f64.iXLen(2403 <vscale x 1 x double> poison,2404 <vscale x 1 x double> %0,2405 iXLen %1,2406 iXLen %2)2407 2408 ret <vscale x 1 x double> %a2409}2410 2411define <vscale x 1 x double> @intrinsic_vrgather_mask_vx_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {2412; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1f64_nxv1f64:2413; CHECK: # %bb.0: # %entry2414; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, mu2415; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t2416; CHECK-NEXT: ret2417entry:2418 %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.mask.nxv1f64.iXLen(2419 <vscale x 1 x double> %0,2420 <vscale x 1 x double> %1,2421 iXLen %2,2422 <vscale x 1 x i1> %3,2423 iXLen %4, iXLen 1)2424 2425 ret <vscale x 1 x double> %a2426}2427 2428define <vscale x 2 x double> @intrinsic_vrgather_vx_nxv2f64_nxv2f64(<vscale x 2 x double> %0, iXLen %1, iXLen %2) nounwind {2429; CHECK-LABEL: intrinsic_vrgather_vx_nxv2f64_nxv2f64:2430; CHECK: # %bb.0: # %entry2431; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma2432; CHECK-NEXT: vrgather.vx v10, v8, a02433; CHECK-NEXT: vmv.v.v v8, v102434; CHECK-NEXT: ret2435entry:2436 %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.nxv2f64.iXLen(2437 <vscale x 2 x double> poison,2438 <vscale x 2 x double> %0,2439 iXLen %1,2440 iXLen %2)2441 2442 ret <vscale x 2 x double> %a2443}2444 2445define <vscale x 2 x double> @intrinsic_vrgather_mask_vx_nxv2f64_nxv2f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {2446; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2f64_nxv2f64:2447; CHECK: # %bb.0: # %entry2448; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, mu2449; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t2450; CHECK-NEXT: ret2451entry:2452 %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.mask.nxv2f64.iXLen(2453 <vscale x 2 x double> %0,2454 <vscale x 2 x double> %1,2455 iXLen %2,2456 <vscale x 2 x i1> %3,2457 iXLen %4, iXLen 1)2458 2459 ret <vscale x 2 x double> %a2460}2461 2462define <vscale x 4 x double> @intrinsic_vrgather_vx_nxv4f64_nxv4f64(<vscale x 4 x double> %0, iXLen %1, iXLen %2) nounwind {2463; CHECK-LABEL: intrinsic_vrgather_vx_nxv4f64_nxv4f64:2464; CHECK: # %bb.0: # %entry2465; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma2466; CHECK-NEXT: vrgather.vx v12, v8, a02467; CHECK-NEXT: vmv.v.v v8, v122468; CHECK-NEXT: ret2469entry:2470 %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.nxv4f64.iXLen(2471 <vscale x 4 x double> poison,2472 <vscale x 4 x double> %0,2473 iXLen %1,2474 iXLen %2)2475 2476 ret <vscale x 4 x double> %a2477}2478 2479define <vscale x 4 x double> @intrinsic_vrgather_mask_vx_nxv4f64_nxv4f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {2480; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4f64_nxv4f64:2481; CHECK: # %bb.0: # %entry2482; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, mu2483; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t2484; CHECK-NEXT: ret2485entry:2486 %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.mask.nxv4f64.iXLen(2487 <vscale x 4 x double> %0,2488 <vscale x 4 x double> %1,2489 iXLen %2,2490 <vscale x 4 x i1> %3,2491 iXLen %4, iXLen 1)2492 2493 ret <vscale x 4 x double> %a2494}2495 2496define <vscale x 8 x double> @intrinsic_vrgather_vx_nxv8f64_nxv8f64(<vscale x 8 x double> %0, iXLen %1, iXLen %2) nounwind {2497; CHECK-LABEL: intrinsic_vrgather_vx_nxv8f64_nxv8f64:2498; CHECK: # %bb.0: # %entry2499; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, ma2500; CHECK-NEXT: vrgather.vx v16, v8, a02501; CHECK-NEXT: vmv.v.v v8, v162502; CHECK-NEXT: ret2503entry:2504 %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.nxv8f64.iXLen(2505 <vscale x 8 x double> poison,2506 <vscale x 8 x double> %0,2507 iXLen %1,2508 iXLen %2)2509 2510 ret <vscale x 8 x double> %a2511}2512 2513define <vscale x 8 x double> @intrinsic_vrgather_mask_vx_nxv8f64_nxv8f64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {2514; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8f64_nxv8f64:2515; CHECK: # %bb.0: # %entry2516; CHECK-NEXT: vsetvli zero, a1, e64, m8, ta, mu2517; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t2518; CHECK-NEXT: ret2519entry:2520 %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.mask.nxv8f64.iXLen(2521 <vscale x 8 x double> %0,2522 <vscale x 8 x double> %1,2523 iXLen %2,2524 <vscale x 8 x i1> %3,2525 iXLen %4, iXLen 1)2526 2527 ret <vscale x 8 x double> %a2528}2529 2530define <vscale x 1 x i8> @intrinsic_vrgather_vi_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {2531; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i8_nxv1i8:2532; CHECK: # %bb.0: # %entry2533; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma2534; CHECK-NEXT: vrgather.vi v9, v8, 92535; CHECK-NEXT: vmv1r.v v8, v92536; CHECK-NEXT: ret2537entry:2538 %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.nxv1i8.iXLen(2539 <vscale x 1 x i8> poison,2540 <vscale x 1 x i8> %0,2541 iXLen 9,2542 iXLen %1)2543 2544 ret <vscale x 1 x i8> %a2545}2546 2547define <vscale x 1 x i8> @intrinsic_vrgather_mask_vi_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {2548; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i8_nxv1i8:2549; CHECK: # %bb.0: # %entry2550; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, mu2551; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2552; CHECK-NEXT: ret2553entry:2554 %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.mask.nxv1i8.iXLen(2555 <vscale x 1 x i8> %0,2556 <vscale x 1 x i8> %1,2557 iXLen 9,2558 <vscale x 1 x i1> %2,2559 iXLen %3, iXLen 1)2560 2561 ret <vscale x 1 x i8> %a2562}2563 2564define <vscale x 2 x i8> @intrinsic_vrgather_vi_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, iXLen %1) nounwind {2565; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i8_nxv2i8:2566; CHECK: # %bb.0: # %entry2567; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma2568; CHECK-NEXT: vrgather.vi v9, v8, 92569; CHECK-NEXT: vmv1r.v v8, v92570; CHECK-NEXT: ret2571entry:2572 %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.nxv2i8.iXLen(2573 <vscale x 2 x i8> poison,2574 <vscale x 2 x i8> %0,2575 iXLen 9,2576 iXLen %1)2577 2578 ret <vscale x 2 x i8> %a2579}2580 2581define <vscale x 2 x i8> @intrinsic_vrgather_mask_vi_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {2582; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i8_nxv2i8:2583; CHECK: # %bb.0: # %entry2584; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, mu2585; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2586; CHECK-NEXT: ret2587entry:2588 %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.mask.nxv2i8.iXLen(2589 <vscale x 2 x i8> %0,2590 <vscale x 2 x i8> %1,2591 iXLen 9,2592 <vscale x 2 x i1> %2,2593 iXLen %3, iXLen 1)2594 2595 ret <vscale x 2 x i8> %a2596}2597 2598define <vscale x 4 x i8> @intrinsic_vrgather_vi_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, iXLen %1) nounwind {2599; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i8_nxv4i8:2600; CHECK: # %bb.0: # %entry2601; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma2602; CHECK-NEXT: vrgather.vi v9, v8, 92603; CHECK-NEXT: vmv1r.v v8, v92604; CHECK-NEXT: ret2605entry:2606 %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.nxv4i8.iXLen(2607 <vscale x 4 x i8> poison,2608 <vscale x 4 x i8> %0,2609 iXLen 9,2610 iXLen %1)2611 2612 ret <vscale x 4 x i8> %a2613}2614 2615define <vscale x 4 x i8> @intrinsic_vrgather_mask_vi_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {2616; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i8_nxv4i8:2617; CHECK: # %bb.0: # %entry2618; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, mu2619; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2620; CHECK-NEXT: ret2621entry:2622 %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.mask.nxv4i8.iXLen(2623 <vscale x 4 x i8> %0,2624 <vscale x 4 x i8> %1,2625 iXLen 9,2626 <vscale x 4 x i1> %2,2627 iXLen %3, iXLen 1)2628 2629 ret <vscale x 4 x i8> %a2630}2631 2632define <vscale x 8 x i8> @intrinsic_vrgather_vi_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, iXLen %1) nounwind {2633; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i8_nxv8i8:2634; CHECK: # %bb.0: # %entry2635; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma2636; CHECK-NEXT: vrgather.vi v9, v8, 92637; CHECK-NEXT: vmv.v.v v8, v92638; CHECK-NEXT: ret2639entry:2640 %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.nxv8i8.iXLen(2641 <vscale x 8 x i8> poison,2642 <vscale x 8 x i8> %0,2643 iXLen 9,2644 iXLen %1)2645 2646 ret <vscale x 8 x i8> %a2647}2648 2649define <vscale x 8 x i8> @intrinsic_vrgather_mask_vi_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {2650; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i8_nxv8i8:2651; CHECK: # %bb.0: # %entry2652; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, mu2653; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2654; CHECK-NEXT: ret2655entry:2656 %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.mask.nxv8i8.iXLen(2657 <vscale x 8 x i8> %0,2658 <vscale x 8 x i8> %1,2659 iXLen 9,2660 <vscale x 8 x i1> %2,2661 iXLen %3, iXLen 1)2662 2663 ret <vscale x 8 x i8> %a2664}2665 2666define <vscale x 16 x i8> @intrinsic_vrgather_vi_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, iXLen %1) nounwind {2667; CHECK-LABEL: intrinsic_vrgather_vi_nxv16i8_nxv16i8:2668; CHECK: # %bb.0: # %entry2669; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma2670; CHECK-NEXT: vrgather.vi v10, v8, 92671; CHECK-NEXT: vmv.v.v v8, v102672; CHECK-NEXT: ret2673entry:2674 %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.nxv16i8.iXLen(2675 <vscale x 16 x i8> poison,2676 <vscale x 16 x i8> %0,2677 iXLen 9,2678 iXLen %1)2679 2680 ret <vscale x 16 x i8> %a2681}2682 2683define <vscale x 16 x i8> @intrinsic_vrgather_mask_vi_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {2684; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16i8_nxv16i8:2685; CHECK: # %bb.0: # %entry2686; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, mu2687; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t2688; CHECK-NEXT: ret2689entry:2690 %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.mask.nxv16i8.iXLen(2691 <vscale x 16 x i8> %0,2692 <vscale x 16 x i8> %1,2693 iXLen 9,2694 <vscale x 16 x i1> %2,2695 iXLen %3, iXLen 1)2696 2697 ret <vscale x 16 x i8> %a2698}2699 2700define <vscale x 32 x i8> @intrinsic_vrgather_vi_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, iXLen %1) nounwind {2701; CHECK-LABEL: intrinsic_vrgather_vi_nxv32i8_nxv32i8:2702; CHECK: # %bb.0: # %entry2703; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma2704; CHECK-NEXT: vrgather.vi v12, v8, 92705; CHECK-NEXT: vmv.v.v v8, v122706; CHECK-NEXT: ret2707entry:2708 %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.nxv32i8.iXLen(2709 <vscale x 32 x i8> poison,2710 <vscale x 32 x i8> %0,2711 iXLen 9,2712 iXLen %1)2713 2714 ret <vscale x 32 x i8> %a2715}2716 2717define <vscale x 32 x i8> @intrinsic_vrgather_mask_vi_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {2718; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32i8_nxv32i8:2719; CHECK: # %bb.0: # %entry2720; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, mu2721; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t2722; CHECK-NEXT: ret2723entry:2724 %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.mask.nxv32i8.iXLen(2725 <vscale x 32 x i8> %0,2726 <vscale x 32 x i8> %1,2727 iXLen 9,2728 <vscale x 32 x i1> %2,2729 iXLen %3, iXLen 1)2730 2731 ret <vscale x 32 x i8> %a2732}2733 2734define <vscale x 64 x i8> @intrinsic_vrgather_vi_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, iXLen %1) nounwind {2735; CHECK-LABEL: intrinsic_vrgather_vi_nxv64i8_nxv64i8:2736; CHECK: # %bb.0: # %entry2737; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma2738; CHECK-NEXT: vrgather.vi v16, v8, 92739; CHECK-NEXT: vmv.v.v v8, v162740; CHECK-NEXT: ret2741entry:2742 %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.nxv64i8.iXLen(2743 <vscale x 64 x i8> poison,2744 <vscale x 64 x i8> %0,2745 iXLen 9,2746 iXLen %1)2747 2748 ret <vscale x 64 x i8> %a2749}2750 2751define <vscale x 64 x i8> @intrinsic_vrgather_mask_vi_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {2752; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv64i8_nxv64i8:2753; CHECK: # %bb.0: # %entry2754; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, mu2755; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t2756; CHECK-NEXT: ret2757entry:2758 %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.mask.nxv64i8.iXLen(2759 <vscale x 64 x i8> %0,2760 <vscale x 64 x i8> %1,2761 iXLen 9,2762 <vscale x 64 x i1> %2,2763 iXLen %3, iXLen 1)2764 2765 ret <vscale x 64 x i8> %a2766}2767 2768define <vscale x 1 x i16> @intrinsic_vrgather_vi_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, iXLen %1) nounwind {2769; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i16_nxv1i16:2770; CHECK: # %bb.0: # %entry2771; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma2772; CHECK-NEXT: vrgather.vi v9, v8, 92773; CHECK-NEXT: vmv1r.v v8, v92774; CHECK-NEXT: ret2775entry:2776 %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.nxv1i16.iXLen(2777 <vscale x 1 x i16> poison,2778 <vscale x 1 x i16> %0,2779 iXLen 9,2780 iXLen %1)2781 2782 ret <vscale x 1 x i16> %a2783}2784 2785define <vscale x 1 x i16> @intrinsic_vrgather_mask_vi_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {2786; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i16_nxv1i16:2787; CHECK: # %bb.0: # %entry2788; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu2789; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2790; CHECK-NEXT: ret2791entry:2792 %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.mask.nxv1i16.iXLen(2793 <vscale x 1 x i16> %0,2794 <vscale x 1 x i16> %1,2795 iXLen 9,2796 <vscale x 1 x i1> %2,2797 iXLen %3, iXLen 1)2798 2799 ret <vscale x 1 x i16> %a2800}2801 2802define <vscale x 2 x i16> @intrinsic_vrgather_vi_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, iXLen %1) nounwind {2803; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i16_nxv2i16:2804; CHECK: # %bb.0: # %entry2805; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma2806; CHECK-NEXT: vrgather.vi v9, v8, 92807; CHECK-NEXT: vmv1r.v v8, v92808; CHECK-NEXT: ret2809entry:2810 %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.nxv2i16.iXLen(2811 <vscale x 2 x i16> poison,2812 <vscale x 2 x i16> %0,2813 iXLen 9,2814 iXLen %1)2815 2816 ret <vscale x 2 x i16> %a2817}2818 2819define <vscale x 2 x i16> @intrinsic_vrgather_mask_vi_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {2820; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i16_nxv2i16:2821; CHECK: # %bb.0: # %entry2822; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu2823; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2824; CHECK-NEXT: ret2825entry:2826 %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.mask.nxv2i16.iXLen(2827 <vscale x 2 x i16> %0,2828 <vscale x 2 x i16> %1,2829 iXLen 9,2830 <vscale x 2 x i1> %2,2831 iXLen %3, iXLen 1)2832 2833 ret <vscale x 2 x i16> %a2834}2835 2836define <vscale x 4 x i16> @intrinsic_vrgather_vi_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, iXLen %1) nounwind {2837; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i16_nxv4i16:2838; CHECK: # %bb.0: # %entry2839; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma2840; CHECK-NEXT: vrgather.vi v9, v8, 92841; CHECK-NEXT: vmv.v.v v8, v92842; CHECK-NEXT: ret2843entry:2844 %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.nxv4i16.iXLen(2845 <vscale x 4 x i16> poison,2846 <vscale x 4 x i16> %0,2847 iXLen 9,2848 iXLen %1)2849 2850 ret <vscale x 4 x i16> %a2851}2852 2853define <vscale x 4 x i16> @intrinsic_vrgather_mask_vi_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {2854; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i16_nxv4i16:2855; CHECK: # %bb.0: # %entry2856; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu2857; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2858; CHECK-NEXT: ret2859entry:2860 %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.mask.nxv4i16.iXLen(2861 <vscale x 4 x i16> %0,2862 <vscale x 4 x i16> %1,2863 iXLen 9,2864 <vscale x 4 x i1> %2,2865 iXLen %3, iXLen 1)2866 2867 ret <vscale x 4 x i16> %a2868}2869 2870define <vscale x 8 x i16> @intrinsic_vrgather_vi_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, iXLen %1) nounwind {2871; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i16_nxv8i16:2872; CHECK: # %bb.0: # %entry2873; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma2874; CHECK-NEXT: vrgather.vi v10, v8, 92875; CHECK-NEXT: vmv.v.v v8, v102876; CHECK-NEXT: ret2877entry:2878 %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.nxv8i16.iXLen(2879 <vscale x 8 x i16> poison,2880 <vscale x 8 x i16> %0,2881 iXLen 9,2882 iXLen %1)2883 2884 ret <vscale x 8 x i16> %a2885}2886 2887define <vscale x 8 x i16> @intrinsic_vrgather_mask_vi_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {2888; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i16_nxv8i16:2889; CHECK: # %bb.0: # %entry2890; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu2891; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t2892; CHECK-NEXT: ret2893entry:2894 %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.mask.nxv8i16.iXLen(2895 <vscale x 8 x i16> %0,2896 <vscale x 8 x i16> %1,2897 iXLen 9,2898 <vscale x 8 x i1> %2,2899 iXLen %3, iXLen 1)2900 2901 ret <vscale x 8 x i16> %a2902}2903 2904define <vscale x 16 x i16> @intrinsic_vrgather_vi_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, iXLen %1) nounwind {2905; CHECK-LABEL: intrinsic_vrgather_vi_nxv16i16_nxv16i16:2906; CHECK: # %bb.0: # %entry2907; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma2908; CHECK-NEXT: vrgather.vi v12, v8, 92909; CHECK-NEXT: vmv.v.v v8, v122910; CHECK-NEXT: ret2911entry:2912 %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.nxv16i16.iXLen(2913 <vscale x 16 x i16> poison,2914 <vscale x 16 x i16> %0,2915 iXLen 9,2916 iXLen %1)2917 2918 ret <vscale x 16 x i16> %a2919}2920 2921define <vscale x 16 x i16> @intrinsic_vrgather_mask_vi_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {2922; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16i16_nxv16i16:2923; CHECK: # %bb.0: # %entry2924; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu2925; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t2926; CHECK-NEXT: ret2927entry:2928 %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.mask.nxv16i16.iXLen(2929 <vscale x 16 x i16> %0,2930 <vscale x 16 x i16> %1,2931 iXLen 9,2932 <vscale x 16 x i1> %2,2933 iXLen %3, iXLen 1)2934 2935 ret <vscale x 16 x i16> %a2936}2937 2938define <vscale x 32 x i16> @intrinsic_vrgather_vi_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, iXLen %1) nounwind {2939; CHECK-LABEL: intrinsic_vrgather_vi_nxv32i16_nxv32i16:2940; CHECK: # %bb.0: # %entry2941; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma2942; CHECK-NEXT: vrgather.vi v16, v8, 92943; CHECK-NEXT: vmv.v.v v8, v162944; CHECK-NEXT: ret2945entry:2946 %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.nxv32i16.iXLen(2947 <vscale x 32 x i16> poison,2948 <vscale x 32 x i16> %0,2949 iXLen 9,2950 iXLen %1)2951 2952 ret <vscale x 32 x i16> %a2953}2954 2955define <vscale x 32 x i16> @intrinsic_vrgather_mask_vi_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {2956; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32i16_nxv32i16:2957; CHECK: # %bb.0: # %entry2958; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, mu2959; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t2960; CHECK-NEXT: ret2961entry:2962 %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.mask.nxv32i16.iXLen(2963 <vscale x 32 x i16> %0,2964 <vscale x 32 x i16> %1,2965 iXLen 9,2966 <vscale x 32 x i1> %2,2967 iXLen %3, iXLen 1)2968 2969 ret <vscale x 32 x i16> %a2970}2971 2972define <vscale x 1 x i32> @intrinsic_vrgather_vi_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, iXLen %1) nounwind {2973; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i32_nxv1i32:2974; CHECK: # %bb.0: # %entry2975; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma2976; CHECK-NEXT: vrgather.vi v9, v8, 92977; CHECK-NEXT: vmv1r.v v8, v92978; CHECK-NEXT: ret2979entry:2980 %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.nxv1i32.iXLen(2981 <vscale x 1 x i32> poison,2982 <vscale x 1 x i32> %0,2983 iXLen 9,2984 iXLen %1)2985 2986 ret <vscale x 1 x i32> %a2987}2988 2989define <vscale x 1 x i32> @intrinsic_vrgather_mask_vi_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {2990; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i32_nxv1i32:2991; CHECK: # %bb.0: # %entry2992; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu2993; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t2994; CHECK-NEXT: ret2995entry:2996 %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.mask.nxv1i32.iXLen(2997 <vscale x 1 x i32> %0,2998 <vscale x 1 x i32> %1,2999 iXLen 9,3000 <vscale x 1 x i1> %2,3001 iXLen %3, iXLen 1)3002 3003 ret <vscale x 1 x i32> %a3004}3005 3006define <vscale x 2 x i32> @intrinsic_vrgather_vi_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, iXLen %1) nounwind {3007; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i32_nxv2i32:3008; CHECK: # %bb.0: # %entry3009; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma3010; CHECK-NEXT: vrgather.vi v9, v8, 93011; CHECK-NEXT: vmv.v.v v8, v93012; CHECK-NEXT: ret3013entry:3014 %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.nxv2i32.iXLen(3015 <vscale x 2 x i32> poison,3016 <vscale x 2 x i32> %0,3017 iXLen 9,3018 iXLen %1)3019 3020 ret <vscale x 2 x i32> %a3021}3022 3023define <vscale x 2 x i32> @intrinsic_vrgather_mask_vi_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {3024; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i32_nxv2i32:3025; CHECK: # %bb.0: # %entry3026; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu3027; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3028; CHECK-NEXT: ret3029entry:3030 %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.mask.nxv2i32.iXLen(3031 <vscale x 2 x i32> %0,3032 <vscale x 2 x i32> %1,3033 iXLen 9,3034 <vscale x 2 x i1> %2,3035 iXLen %3, iXLen 1)3036 3037 ret <vscale x 2 x i32> %a3038}3039 3040define <vscale x 4 x i32> @intrinsic_vrgather_vi_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, iXLen %1) nounwind {3041; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i32_nxv4i32:3042; CHECK: # %bb.0: # %entry3043; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma3044; CHECK-NEXT: vrgather.vi v10, v8, 93045; CHECK-NEXT: vmv.v.v v8, v103046; CHECK-NEXT: ret3047entry:3048 %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.nxv4i32.iXLen(3049 <vscale x 4 x i32> poison,3050 <vscale x 4 x i32> %0,3051 iXLen 9,3052 iXLen %1)3053 3054 ret <vscale x 4 x i32> %a3055}3056 3057define <vscale x 4 x i32> @intrinsic_vrgather_mask_vi_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {3058; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i32_nxv4i32:3059; CHECK: # %bb.0: # %entry3060; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu3061; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t3062; CHECK-NEXT: ret3063entry:3064 %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.mask.nxv4i32.iXLen(3065 <vscale x 4 x i32> %0,3066 <vscale x 4 x i32> %1,3067 iXLen 9,3068 <vscale x 4 x i1> %2,3069 iXLen %3, iXLen 1)3070 3071 ret <vscale x 4 x i32> %a3072}3073 3074define <vscale x 8 x i32> @intrinsic_vrgather_vi_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, iXLen %1) nounwind {3075; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i32_nxv8i32:3076; CHECK: # %bb.0: # %entry3077; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma3078; CHECK-NEXT: vrgather.vi v12, v8, 93079; CHECK-NEXT: vmv.v.v v8, v123080; CHECK-NEXT: ret3081entry:3082 %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.nxv8i32.iXLen(3083 <vscale x 8 x i32> poison,3084 <vscale x 8 x i32> %0,3085 iXLen 9,3086 iXLen %1)3087 3088 ret <vscale x 8 x i32> %a3089}3090 3091define <vscale x 8 x i32> @intrinsic_vrgather_mask_vi_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {3092; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i32_nxv8i32:3093; CHECK: # %bb.0: # %entry3094; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu3095; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t3096; CHECK-NEXT: ret3097entry:3098 %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.mask.nxv8i32.iXLen(3099 <vscale x 8 x i32> %0,3100 <vscale x 8 x i32> %1,3101 iXLen 9,3102 <vscale x 8 x i1> %2,3103 iXLen %3, iXLen 1)3104 3105 ret <vscale x 8 x i32> %a3106}3107 3108define <vscale x 16 x i32> @intrinsic_vrgather_vi_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, iXLen %1) nounwind {3109; CHECK-LABEL: intrinsic_vrgather_vi_nxv16i32_nxv16i32:3110; CHECK: # %bb.0: # %entry3111; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma3112; CHECK-NEXT: vrgather.vi v16, v8, 93113; CHECK-NEXT: vmv.v.v v8, v163114; CHECK-NEXT: ret3115entry:3116 %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.nxv16i32.iXLen(3117 <vscale x 16 x i32> poison,3118 <vscale x 16 x i32> %0,3119 iXLen 9,3120 iXLen %1)3121 3122 ret <vscale x 16 x i32> %a3123}3124 3125define <vscale x 16 x i32> @intrinsic_vrgather_mask_vi_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {3126; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16i32_nxv16i32:3127; CHECK: # %bb.0: # %entry3128; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, mu3129; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t3130; CHECK-NEXT: ret3131entry:3132 %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.mask.nxv16i32.iXLen(3133 <vscale x 16 x i32> %0,3134 <vscale x 16 x i32> %1,3135 iXLen 9,3136 <vscale x 16 x i1> %2,3137 iXLen %3, iXLen 1)3138 3139 ret <vscale x 16 x i32> %a3140}3141 3142define <vscale x 1 x i64> @intrinsic_vrgather_vi_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, iXLen %1) nounwind {3143; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i64_nxv1i64:3144; CHECK: # %bb.0: # %entry3145; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma3146; CHECK-NEXT: vrgather.vi v9, v8, 93147; CHECK-NEXT: vmv.v.v v8, v93148; CHECK-NEXT: ret3149entry:3150 %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.nxv1i64.iXLen(3151 <vscale x 1 x i64> poison,3152 <vscale x 1 x i64> %0,3153 iXLen 9,3154 iXLen %1)3155 3156 ret <vscale x 1 x i64> %a3157}3158 3159define <vscale x 1 x i64> @intrinsic_vrgather_mask_vi_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {3160; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i64_nxv1i64:3161; CHECK: # %bb.0: # %entry3162; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu3163; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3164; CHECK-NEXT: ret3165entry:3166 %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.mask.nxv1i64.iXLen(3167 <vscale x 1 x i64> %0,3168 <vscale x 1 x i64> %1,3169 iXLen 9,3170 <vscale x 1 x i1> %2,3171 iXLen %3, iXLen 1)3172 3173 ret <vscale x 1 x i64> %a3174}3175 3176define <vscale x 2 x i64> @intrinsic_vrgather_vi_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, iXLen %1) nounwind {3177; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i64_nxv2i64:3178; CHECK: # %bb.0: # %entry3179; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma3180; CHECK-NEXT: vrgather.vi v10, v8, 93181; CHECK-NEXT: vmv.v.v v8, v103182; CHECK-NEXT: ret3183entry:3184 %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.nxv2i64.iXLen(3185 <vscale x 2 x i64> poison,3186 <vscale x 2 x i64> %0,3187 iXLen 9,3188 iXLen %1)3189 3190 ret <vscale x 2 x i64> %a3191}3192 3193define <vscale x 2 x i64> @intrinsic_vrgather_mask_vi_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {3194; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i64_nxv2i64:3195; CHECK: # %bb.0: # %entry3196; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu3197; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t3198; CHECK-NEXT: ret3199entry:3200 %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.mask.nxv2i64.iXLen(3201 <vscale x 2 x i64> %0,3202 <vscale x 2 x i64> %1,3203 iXLen 9,3204 <vscale x 2 x i1> %2,3205 iXLen %3, iXLen 1)3206 3207 ret <vscale x 2 x i64> %a3208}3209 3210define <vscale x 4 x i64> @intrinsic_vrgather_vi_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, iXLen %1) nounwind {3211; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i64_nxv4i64:3212; CHECK: # %bb.0: # %entry3213; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma3214; CHECK-NEXT: vrgather.vi v12, v8, 93215; CHECK-NEXT: vmv.v.v v8, v123216; CHECK-NEXT: ret3217entry:3218 %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.nxv4i64.iXLen(3219 <vscale x 4 x i64> poison,3220 <vscale x 4 x i64> %0,3221 iXLen 9,3222 iXLen %1)3223 3224 ret <vscale x 4 x i64> %a3225}3226 3227define <vscale x 4 x i64> @intrinsic_vrgather_mask_vi_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {3228; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i64_nxv4i64:3229; CHECK: # %bb.0: # %entry3230; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu3231; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t3232; CHECK-NEXT: ret3233entry:3234 %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.mask.nxv4i64.iXLen(3235 <vscale x 4 x i64> %0,3236 <vscale x 4 x i64> %1,3237 iXLen 9,3238 <vscale x 4 x i1> %2,3239 iXLen %3, iXLen 1)3240 3241 ret <vscale x 4 x i64> %a3242}3243 3244define <vscale x 8 x i64> @intrinsic_vrgather_vi_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, iXLen %1) nounwind {3245; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i64_nxv8i64:3246; CHECK: # %bb.0: # %entry3247; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3248; CHECK-NEXT: vrgather.vi v16, v8, 93249; CHECK-NEXT: vmv.v.v v8, v163250; CHECK-NEXT: ret3251entry:3252 %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.nxv8i64.iXLen(3253 <vscale x 8 x i64> poison,3254 <vscale x 8 x i64> %0,3255 iXLen 9,3256 iXLen %1)3257 3258 ret <vscale x 8 x i64> %a3259}3260 3261define <vscale x 8 x i64> @intrinsic_vrgather_mask_vi_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {3262; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i64_nxv8i64:3263; CHECK: # %bb.0: # %entry3264; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu3265; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t3266; CHECK-NEXT: ret3267entry:3268 %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.mask.nxv8i64.iXLen(3269 <vscale x 8 x i64> %0,3270 <vscale x 8 x i64> %1,3271 iXLen 9,3272 <vscale x 8 x i1> %2,3273 iXLen %3, iXLen 1)3274 3275 ret <vscale x 8 x i64> %a3276}3277 3278define <vscale x 1 x half> @intrinsic_vrgather_vi_nxv1f16_nxv1f16(<vscale x 1 x half> %0, iXLen %1) nounwind {3279; CHECK-LABEL: intrinsic_vrgather_vi_nxv1f16_nxv1f16:3280; CHECK: # %bb.0: # %entry3281; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma3282; CHECK-NEXT: vrgather.vi v9, v8, 93283; CHECK-NEXT: vmv1r.v v8, v93284; CHECK-NEXT: ret3285entry:3286 %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.nxv1f16.iXLen(3287 <vscale x 1 x half> poison,3288 <vscale x 1 x half> %0,3289 iXLen 9,3290 iXLen %1)3291 3292 ret <vscale x 1 x half> %a3293}3294 3295define <vscale x 1 x half> @intrinsic_vrgather_mask_vi_nxv1f16_nxv1f16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {3296; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1f16_nxv1f16:3297; CHECK: # %bb.0: # %entry3298; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu3299; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3300; CHECK-NEXT: ret3301entry:3302 %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.mask.nxv1f16.iXLen(3303 <vscale x 1 x half> %0,3304 <vscale x 1 x half> %1,3305 iXLen 9,3306 <vscale x 1 x i1> %2,3307 iXLen %3, iXLen 1)3308 3309 ret <vscale x 1 x half> %a3310}3311 3312define <vscale x 2 x half> @intrinsic_vrgather_vi_nxv2f16_nxv2f16(<vscale x 2 x half> %0, iXLen %1) nounwind {3313; CHECK-LABEL: intrinsic_vrgather_vi_nxv2f16_nxv2f16:3314; CHECK: # %bb.0: # %entry3315; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma3316; CHECK-NEXT: vrgather.vi v9, v8, 93317; CHECK-NEXT: vmv1r.v v8, v93318; CHECK-NEXT: ret3319entry:3320 %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.nxv2f16.iXLen(3321 <vscale x 2 x half> poison,3322 <vscale x 2 x half> %0,3323 iXLen 9,3324 iXLen %1)3325 3326 ret <vscale x 2 x half> %a3327}3328 3329define <vscale x 2 x half> @intrinsic_vrgather_mask_vi_nxv2f16_nxv2f16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {3330; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2f16_nxv2f16:3331; CHECK: # %bb.0: # %entry3332; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu3333; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3334; CHECK-NEXT: ret3335entry:3336 %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.mask.nxv2f16.iXLen(3337 <vscale x 2 x half> %0,3338 <vscale x 2 x half> %1,3339 iXLen 9,3340 <vscale x 2 x i1> %2,3341 iXLen %3, iXLen 1)3342 3343 ret <vscale x 2 x half> %a3344}3345 3346define <vscale x 4 x half> @intrinsic_vrgather_vi_nxv4f16_nxv4f16(<vscale x 4 x half> %0, iXLen %1) nounwind {3347; CHECK-LABEL: intrinsic_vrgather_vi_nxv4f16_nxv4f16:3348; CHECK: # %bb.0: # %entry3349; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma3350; CHECK-NEXT: vrgather.vi v9, v8, 93351; CHECK-NEXT: vmv.v.v v8, v93352; CHECK-NEXT: ret3353entry:3354 %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.nxv4f16.iXLen(3355 <vscale x 4 x half> poison,3356 <vscale x 4 x half> %0,3357 iXLen 9,3358 iXLen %1)3359 3360 ret <vscale x 4 x half> %a3361}3362 3363define <vscale x 4 x half> @intrinsic_vrgather_mask_vi_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {3364; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4f16_nxv4f16:3365; CHECK: # %bb.0: # %entry3366; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu3367; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3368; CHECK-NEXT: ret3369entry:3370 %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.mask.nxv4f16.iXLen(3371 <vscale x 4 x half> %0,3372 <vscale x 4 x half> %1,3373 iXLen 9,3374 <vscale x 4 x i1> %2,3375 iXLen %3, iXLen 1)3376 3377 ret <vscale x 4 x half> %a3378}3379 3380define <vscale x 8 x half> @intrinsic_vrgather_vi_nxv8f16_nxv8f16(<vscale x 8 x half> %0, iXLen %1) nounwind {3381; CHECK-LABEL: intrinsic_vrgather_vi_nxv8f16_nxv8f16:3382; CHECK: # %bb.0: # %entry3383; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma3384; CHECK-NEXT: vrgather.vi v10, v8, 93385; CHECK-NEXT: vmv.v.v v8, v103386; CHECK-NEXT: ret3387entry:3388 %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.nxv8f16.iXLen(3389 <vscale x 8 x half> poison,3390 <vscale x 8 x half> %0,3391 iXLen 9,3392 iXLen %1)3393 3394 ret <vscale x 8 x half> %a3395}3396 3397define <vscale x 8 x half> @intrinsic_vrgather_mask_vi_nxv8f16_nxv8f16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {3398; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8f16_nxv8f16:3399; CHECK: # %bb.0: # %entry3400; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu3401; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t3402; CHECK-NEXT: ret3403entry:3404 %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.mask.nxv8f16.iXLen(3405 <vscale x 8 x half> %0,3406 <vscale x 8 x half> %1,3407 iXLen 9,3408 <vscale x 8 x i1> %2,3409 iXLen %3, iXLen 1)3410 3411 ret <vscale x 8 x half> %a3412}3413 3414define <vscale x 16 x half> @intrinsic_vrgather_vi_nxv16f16_nxv16f16(<vscale x 16 x half> %0, iXLen %1) nounwind {3415; CHECK-LABEL: intrinsic_vrgather_vi_nxv16f16_nxv16f16:3416; CHECK: # %bb.0: # %entry3417; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3418; CHECK-NEXT: vrgather.vi v12, v8, 93419; CHECK-NEXT: vmv.v.v v8, v123420; CHECK-NEXT: ret3421entry:3422 %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.nxv16f16.iXLen(3423 <vscale x 16 x half> poison,3424 <vscale x 16 x half> %0,3425 iXLen 9,3426 iXLen %1)3427 3428 ret <vscale x 16 x half> %a3429}3430 3431define <vscale x 16 x half> @intrinsic_vrgather_mask_vi_nxv16f16_nxv16f16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {3432; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16f16_nxv16f16:3433; CHECK: # %bb.0: # %entry3434; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3435; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t3436; CHECK-NEXT: ret3437entry:3438 %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.mask.nxv16f16.iXLen(3439 <vscale x 16 x half> %0,3440 <vscale x 16 x half> %1,3441 iXLen 9,3442 <vscale x 16 x i1> %2,3443 iXLen %3, iXLen 1)3444 3445 ret <vscale x 16 x half> %a3446}3447 3448define <vscale x 32 x half> @intrinsic_vrgather_vi_nxv32f16_nxv32f16(<vscale x 32 x half> %0, iXLen %1) nounwind {3449; CHECK-LABEL: intrinsic_vrgather_vi_nxv32f16_nxv32f16:3450; CHECK: # %bb.0: # %entry3451; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma3452; CHECK-NEXT: vrgather.vi v16, v8, 93453; CHECK-NEXT: vmv.v.v v8, v163454; CHECK-NEXT: ret3455entry:3456 %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.nxv32f16.iXLen(3457 <vscale x 32 x half> poison,3458 <vscale x 32 x half> %0,3459 iXLen 9,3460 iXLen %1)3461 3462 ret <vscale x 32 x half> %a3463}3464 3465define <vscale x 32 x half> @intrinsic_vrgather_mask_vi_nxv32f16_nxv32f16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {3466; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32f16_nxv32f16:3467; CHECK: # %bb.0: # %entry3468; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, mu3469; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t3470; CHECK-NEXT: ret3471entry:3472 %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.mask.nxv32f16.iXLen(3473 <vscale x 32 x half> %0,3474 <vscale x 32 x half> %1,3475 iXLen 9,3476 <vscale x 32 x i1> %2,3477 iXLen %3, iXLen 1)3478 3479 ret <vscale x 32 x half> %a3480}3481 3482define <vscale x 1 x float> @intrinsic_vrgather_vi_nxv1f32_nxv1f32(<vscale x 1 x float> %0, iXLen %1) nounwind {3483; CHECK-LABEL: intrinsic_vrgather_vi_nxv1f32_nxv1f32:3484; CHECK: # %bb.0: # %entry3485; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma3486; CHECK-NEXT: vrgather.vi v9, v8, 93487; CHECK-NEXT: vmv1r.v v8, v93488; CHECK-NEXT: ret3489entry:3490 %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.nxv1f32.iXLen(3491 <vscale x 1 x float> poison,3492 <vscale x 1 x float> %0,3493 iXLen 9,3494 iXLen %1)3495 3496 ret <vscale x 1 x float> %a3497}3498 3499define <vscale x 1 x float> @intrinsic_vrgather_mask_vi_nxv1f32_nxv1f32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {3500; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1f32_nxv1f32:3501; CHECK: # %bb.0: # %entry3502; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu3503; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3504; CHECK-NEXT: ret3505entry:3506 %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.mask.nxv1f32.iXLen(3507 <vscale x 1 x float> %0,3508 <vscale x 1 x float> %1,3509 iXLen 9,3510 <vscale x 1 x i1> %2,3511 iXLen %3, iXLen 1)3512 3513 ret <vscale x 1 x float> %a3514}3515 3516define <vscale x 2 x float> @intrinsic_vrgather_vi_nxv2f32_nxv2f32(<vscale x 2 x float> %0, iXLen %1) nounwind {3517; CHECK-LABEL: intrinsic_vrgather_vi_nxv2f32_nxv2f32:3518; CHECK: # %bb.0: # %entry3519; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma3520; CHECK-NEXT: vrgather.vi v9, v8, 93521; CHECK-NEXT: vmv.v.v v8, v93522; CHECK-NEXT: ret3523entry:3524 %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.nxv2f32.iXLen(3525 <vscale x 2 x float> poison,3526 <vscale x 2 x float> %0,3527 iXLen 9,3528 iXLen %1)3529 3530 ret <vscale x 2 x float> %a3531}3532 3533define <vscale x 2 x float> @intrinsic_vrgather_mask_vi_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {3534; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2f32_nxv2f32:3535; CHECK: # %bb.0: # %entry3536; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu3537; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3538; CHECK-NEXT: ret3539entry:3540 %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.mask.nxv2f32.iXLen(3541 <vscale x 2 x float> %0,3542 <vscale x 2 x float> %1,3543 iXLen 9,3544 <vscale x 2 x i1> %2,3545 iXLen %3, iXLen 1)3546 3547 ret <vscale x 2 x float> %a3548}3549 3550define <vscale x 4 x float> @intrinsic_vrgather_vi_nxv4f32_nxv4f32(<vscale x 4 x float> %0, iXLen %1) nounwind {3551; CHECK-LABEL: intrinsic_vrgather_vi_nxv4f32_nxv4f32:3552; CHECK: # %bb.0: # %entry3553; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma3554; CHECK-NEXT: vrgather.vi v10, v8, 93555; CHECK-NEXT: vmv.v.v v8, v103556; CHECK-NEXT: ret3557entry:3558 %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.nxv4f32.iXLen(3559 <vscale x 4 x float> poison,3560 <vscale x 4 x float> %0,3561 iXLen 9,3562 iXLen %1)3563 3564 ret <vscale x 4 x float> %a3565}3566 3567define <vscale x 4 x float> @intrinsic_vrgather_mask_vi_nxv4f32_nxv4f32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {3568; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4f32_nxv4f32:3569; CHECK: # %bb.0: # %entry3570; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu3571; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t3572; CHECK-NEXT: ret3573entry:3574 %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.mask.nxv4f32.iXLen(3575 <vscale x 4 x float> %0,3576 <vscale x 4 x float> %1,3577 iXLen 9,3578 <vscale x 4 x i1> %2,3579 iXLen %3, iXLen 1)3580 3581 ret <vscale x 4 x float> %a3582}3583 3584define <vscale x 8 x float> @intrinsic_vrgather_vi_nxv8f32_nxv8f32(<vscale x 8 x float> %0, iXLen %1) nounwind {3585; CHECK-LABEL: intrinsic_vrgather_vi_nxv8f32_nxv8f32:3586; CHECK: # %bb.0: # %entry3587; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma3588; CHECK-NEXT: vrgather.vi v12, v8, 93589; CHECK-NEXT: vmv.v.v v8, v123590; CHECK-NEXT: ret3591entry:3592 %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.nxv8f32.iXLen(3593 <vscale x 8 x float> poison,3594 <vscale x 8 x float> %0,3595 iXLen 9,3596 iXLen %1)3597 3598 ret <vscale x 8 x float> %a3599}3600 3601define <vscale x 8 x float> @intrinsic_vrgather_mask_vi_nxv8f32_nxv8f32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {3602; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8f32_nxv8f32:3603; CHECK: # %bb.0: # %entry3604; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu3605; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t3606; CHECK-NEXT: ret3607entry:3608 %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.mask.nxv8f32.iXLen(3609 <vscale x 8 x float> %0,3610 <vscale x 8 x float> %1,3611 iXLen 9,3612 <vscale x 8 x i1> %2,3613 iXLen %3, iXLen 1)3614 3615 ret <vscale x 8 x float> %a3616}3617 3618define <vscale x 16 x float> @intrinsic_vrgather_vi_nxv16f32_nxv16f32(<vscale x 16 x float> %0, iXLen %1) nounwind {3619; CHECK-LABEL: intrinsic_vrgather_vi_nxv16f32_nxv16f32:3620; CHECK: # %bb.0: # %entry3621; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma3622; CHECK-NEXT: vrgather.vi v16, v8, 93623; CHECK-NEXT: vmv.v.v v8, v163624; CHECK-NEXT: ret3625entry:3626 %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.nxv16f32.iXLen(3627 <vscale x 16 x float> poison,3628 <vscale x 16 x float> %0,3629 iXLen 9,3630 iXLen %1)3631 3632 ret <vscale x 16 x float> %a3633}3634 3635define <vscale x 16 x float> @intrinsic_vrgather_mask_vi_nxv16f32_nxv16f32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {3636; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16f32_nxv16f32:3637; CHECK: # %bb.0: # %entry3638; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, mu3639; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t3640; CHECK-NEXT: ret3641entry:3642 %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.mask.nxv16f32.iXLen(3643 <vscale x 16 x float> %0,3644 <vscale x 16 x float> %1,3645 iXLen 9,3646 <vscale x 16 x i1> %2,3647 iXLen %3, iXLen 1)3648 3649 ret <vscale x 16 x float> %a3650}3651 3652define <vscale x 1 x double> @intrinsic_vrgather_vi_nxv1f64_nxv1f64(<vscale x 1 x double> %0, iXLen %1) nounwind {3653; CHECK-LABEL: intrinsic_vrgather_vi_nxv1f64_nxv1f64:3654; CHECK: # %bb.0: # %entry3655; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma3656; CHECK-NEXT: vrgather.vi v9, v8, 93657; CHECK-NEXT: vmv.v.v v8, v93658; CHECK-NEXT: ret3659entry:3660 %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.nxv1f64.iXLen(3661 <vscale x 1 x double> poison,3662 <vscale x 1 x double> %0,3663 iXLen 9,3664 iXLen %1)3665 3666 ret <vscale x 1 x double> %a3667}3668 3669define <vscale x 1 x double> @intrinsic_vrgather_mask_vi_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {3670; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1f64_nxv1f64:3671; CHECK: # %bb.0: # %entry3672; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu3673; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t3674; CHECK-NEXT: ret3675entry:3676 %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.mask.nxv1f64.iXLen(3677 <vscale x 1 x double> %0,3678 <vscale x 1 x double> %1,3679 iXLen 9,3680 <vscale x 1 x i1> %2,3681 iXLen %3, iXLen 1)3682 3683 ret <vscale x 1 x double> %a3684}3685 3686define <vscale x 2 x double> @intrinsic_vrgather_vi_nxv2f64_nxv2f64(<vscale x 2 x double> %0, iXLen %1) nounwind {3687; CHECK-LABEL: intrinsic_vrgather_vi_nxv2f64_nxv2f64:3688; CHECK: # %bb.0: # %entry3689; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma3690; CHECK-NEXT: vrgather.vi v10, v8, 93691; CHECK-NEXT: vmv.v.v v8, v103692; CHECK-NEXT: ret3693entry:3694 %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.nxv2f64.iXLen(3695 <vscale x 2 x double> poison,3696 <vscale x 2 x double> %0,3697 iXLen 9,3698 iXLen %1)3699 3700 ret <vscale x 2 x double> %a3701}3702 3703define <vscale x 2 x double> @intrinsic_vrgather_mask_vi_nxv2f64_nxv2f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {3704; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2f64_nxv2f64:3705; CHECK: # %bb.0: # %entry3706; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu3707; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t3708; CHECK-NEXT: ret3709entry:3710 %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.mask.nxv2f64.iXLen(3711 <vscale x 2 x double> %0,3712 <vscale x 2 x double> %1,3713 iXLen 9,3714 <vscale x 2 x i1> %2,3715 iXLen %3, iXLen 1)3716 3717 ret <vscale x 2 x double> %a3718}3719 3720define <vscale x 4 x double> @intrinsic_vrgather_vi_nxv4f64_nxv4f64(<vscale x 4 x double> %0, iXLen %1) nounwind {3721; CHECK-LABEL: intrinsic_vrgather_vi_nxv4f64_nxv4f64:3722; CHECK: # %bb.0: # %entry3723; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma3724; CHECK-NEXT: vrgather.vi v12, v8, 93725; CHECK-NEXT: vmv.v.v v8, v123726; CHECK-NEXT: ret3727entry:3728 %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.nxv4f64.iXLen(3729 <vscale x 4 x double> poison,3730 <vscale x 4 x double> %0,3731 iXLen 9,3732 iXLen %1)3733 3734 ret <vscale x 4 x double> %a3735}3736 3737define <vscale x 4 x double> @intrinsic_vrgather_mask_vi_nxv4f64_nxv4f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {3738; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4f64_nxv4f64:3739; CHECK: # %bb.0: # %entry3740; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu3741; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t3742; CHECK-NEXT: ret3743entry:3744 %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.mask.nxv4f64.iXLen(3745 <vscale x 4 x double> %0,3746 <vscale x 4 x double> %1,3747 iXLen 9,3748 <vscale x 4 x i1> %2,3749 iXLen %3, iXLen 1)3750 3751 ret <vscale x 4 x double> %a3752}3753 3754define <vscale x 8 x double> @intrinsic_vrgather_vi_nxv8f64_nxv8f64(<vscale x 8 x double> %0, iXLen %1) nounwind {3755; CHECK-LABEL: intrinsic_vrgather_vi_nxv8f64_nxv8f64:3756; CHECK: # %bb.0: # %entry3757; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma3758; CHECK-NEXT: vrgather.vi v16, v8, 93759; CHECK-NEXT: vmv.v.v v8, v163760; CHECK-NEXT: ret3761entry:3762 %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.nxv8f64.iXLen(3763 <vscale x 8 x double> poison,3764 <vscale x 8 x double> %0,3765 iXLen 9,3766 iXLen %1)3767 3768 ret <vscale x 8 x double> %a3769}3770 3771define <vscale x 8 x double> @intrinsic_vrgather_mask_vi_nxv8f64_nxv8f64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {3772; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8f64_nxv8f64:3773; CHECK: # %bb.0: # %entry3774; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu3775; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t3776; CHECK-NEXT: ret3777entry:3778 %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.mask.nxv8f64.iXLen(3779 <vscale x 8 x double> %0,3780 <vscale x 8 x double> %1,3781 iXLen 9,3782 <vscale x 8 x i1> %2,3783 iXLen %3, iXLen 1)3784 3785 ret <vscale x 8 x double> %a3786}3787 3788define <vscale x 1 x bfloat> @intrinsic_vrgather_vv_nxv1bf16_nxv1bf16_nxv1i16(<vscale x 1 x bfloat> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {3789; CHECK-LABEL: intrinsic_vrgather_vv_nxv1bf16_nxv1bf16_nxv1i16:3790; CHECK: # %bb.0: # %entry3791; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma3792; CHECK-NEXT: vrgather.vv v10, v8, v93793; CHECK-NEXT: vmv1r.v v8, v103794; CHECK-NEXT: ret3795entry:3796 %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vv.nxv1bf16.iXLen(3797 <vscale x 1 x bfloat> poison,3798 <vscale x 1 x bfloat> %0,3799 <vscale x 1 x i16> %1,3800 iXLen %2)3801 3802 ret <vscale x 1 x bfloat> %a3803}3804 3805define <vscale x 1 x bfloat> @intrinsic_vrgather_mask_vv_nxv1bf16_nxv1bf16_nxv1i16(<vscale x 1 x bfloat> %0, <vscale x 1 x bfloat> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {3806; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1bf16_nxv1bf16_nxv1i16:3807; CHECK: # %bb.0: # %entry3808; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu3809; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t3810; CHECK-NEXT: ret3811entry:3812 %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv1bf16.iXLen(3813 <vscale x 1 x bfloat> %0,3814 <vscale x 1 x bfloat> %1,3815 <vscale x 1 x i16> %2,3816 <vscale x 1 x i1> %3,3817 iXLen %4, iXLen 1)3818 3819 ret <vscale x 1 x bfloat> %a3820}3821 3822define <vscale x 2 x bfloat> @intrinsic_vrgather_vv_nxv2bf16_nxv2bf16_nxv2i16(<vscale x 2 x bfloat> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {3823; CHECK-LABEL: intrinsic_vrgather_vv_nxv2bf16_nxv2bf16_nxv2i16:3824; CHECK: # %bb.0: # %entry3825; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma3826; CHECK-NEXT: vrgather.vv v10, v8, v93827; CHECK-NEXT: vmv1r.v v8, v103828; CHECK-NEXT: ret3829entry:3830 %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vv.nxv2bf16.iXLen(3831 <vscale x 2 x bfloat> poison,3832 <vscale x 2 x bfloat> %0,3833 <vscale x 2 x i16> %1,3834 iXLen %2)3835 3836 ret <vscale x 2 x bfloat> %a3837}3838 3839define <vscale x 2 x bfloat> @intrinsic_vrgather_mask_vv_nxv2bf16_nxv2bf16_nxv2i16(<vscale x 2 x bfloat> %0, <vscale x 2 x bfloat> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {3840; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2bf16_nxv2bf16_nxv2i16:3841; CHECK: # %bb.0: # %entry3842; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu3843; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t3844; CHECK-NEXT: ret3845entry:3846 %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv2bf16.iXLen(3847 <vscale x 2 x bfloat> %0,3848 <vscale x 2 x bfloat> %1,3849 <vscale x 2 x i16> %2,3850 <vscale x 2 x i1> %3,3851 iXLen %4, iXLen 1)3852 3853 ret <vscale x 2 x bfloat> %a3854}3855 3856define <vscale x 4 x bfloat> @intrinsic_vrgather_vv_nxv4bf16_nxv4bf16_nxv4i16(<vscale x 4 x bfloat> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {3857; CHECK-LABEL: intrinsic_vrgather_vv_nxv4bf16_nxv4bf16_nxv4i16:3858; CHECK: # %bb.0: # %entry3859; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma3860; CHECK-NEXT: vrgather.vv v10, v8, v93861; CHECK-NEXT: vmv.v.v v8, v103862; CHECK-NEXT: ret3863entry:3864 %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vv.nxv4bf16.iXLen(3865 <vscale x 4 x bfloat> poison,3866 <vscale x 4 x bfloat> %0,3867 <vscale x 4 x i16> %1,3868 iXLen %2)3869 3870 ret <vscale x 4 x bfloat> %a3871}3872 3873define <vscale x 4 x bfloat> @intrinsic_vrgather_mask_vv_nxv4bf16_nxv4bf16_nxv4i16(<vscale x 4 x bfloat> %0, <vscale x 4 x bfloat> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {3874; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4bf16_nxv4bf16_nxv4i16:3875; CHECK: # %bb.0: # %entry3876; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu3877; CHECK-NEXT: vrgather.vv v8, v9, v10, v0.t3878; CHECK-NEXT: ret3879entry:3880 %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv4bf16.iXLen(3881 <vscale x 4 x bfloat> %0,3882 <vscale x 4 x bfloat> %1,3883 <vscale x 4 x i16> %2,3884 <vscale x 4 x i1> %3,3885 iXLen %4, iXLen 1)3886 3887 ret <vscale x 4 x bfloat> %a3888}3889 3890define <vscale x 8 x bfloat> @intrinsic_vrgather_vv_nxv8bf16_nxv8bf16_nxv8i16(<vscale x 8 x bfloat> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {3891; CHECK-LABEL: intrinsic_vrgather_vv_nxv8bf16_nxv8bf16_nxv8i16:3892; CHECK: # %bb.0: # %entry3893; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma3894; CHECK-NEXT: vrgather.vv v12, v8, v103895; CHECK-NEXT: vmv.v.v v8, v123896; CHECK-NEXT: ret3897entry:3898 %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vv.nxv8bf16.iXLen(3899 <vscale x 8 x bfloat> poison,3900 <vscale x 8 x bfloat> %0,3901 <vscale x 8 x i16> %1,3902 iXLen %2)3903 3904 ret <vscale x 8 x bfloat> %a3905}3906 3907define <vscale x 8 x bfloat> @intrinsic_vrgather_mask_vv_nxv8bf16_nxv8bf16_nxv8i16(<vscale x 8 x bfloat> %0, <vscale x 8 x bfloat> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {3908; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8bf16_nxv8bf16_nxv8i16:3909; CHECK: # %bb.0: # %entry3910; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu3911; CHECK-NEXT: vrgather.vv v8, v10, v12, v0.t3912; CHECK-NEXT: ret3913entry:3914 %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv8bf16.iXLen(3915 <vscale x 8 x bfloat> %0,3916 <vscale x 8 x bfloat> %1,3917 <vscale x 8 x i16> %2,3918 <vscale x 8 x i1> %3,3919 iXLen %4, iXLen 1)3920 3921 ret <vscale x 8 x bfloat> %a3922}3923 3924define <vscale x 16 x bfloat> @intrinsic_vrgather_vv_nxv16bf16_nxv16bf16_nxv16i16(<vscale x 16 x bfloat> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {3925; CHECK-LABEL: intrinsic_vrgather_vv_nxv16bf16_nxv16bf16_nxv16i16:3926; CHECK: # %bb.0: # %entry3927; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma3928; CHECK-NEXT: vrgather.vv v16, v8, v123929; CHECK-NEXT: vmv.v.v v8, v163930; CHECK-NEXT: ret3931entry:3932 %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vv.nxv16bf16.iXLen(3933 <vscale x 16 x bfloat> poison,3934 <vscale x 16 x bfloat> %0,3935 <vscale x 16 x i16> %1,3936 iXLen %2)3937 3938 ret <vscale x 16 x bfloat> %a3939}3940 3941define <vscale x 16 x bfloat> @intrinsic_vrgather_mask_vv_nxv16bf16_nxv16bf16_nxv16i16(<vscale x 16 x bfloat> %0, <vscale x 16 x bfloat> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {3942; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16bf16_nxv16bf16_nxv16i16:3943; CHECK: # %bb.0: # %entry3944; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu3945; CHECK-NEXT: vrgather.vv v8, v12, v16, v0.t3946; CHECK-NEXT: ret3947entry:3948 %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv16bf16.iXLen(3949 <vscale x 16 x bfloat> %0,3950 <vscale x 16 x bfloat> %1,3951 <vscale x 16 x i16> %2,3952 <vscale x 16 x i1> %3,3953 iXLen %4, iXLen 1)3954 3955 ret <vscale x 16 x bfloat> %a3956}3957 3958define <vscale x 32 x bfloat> @intrinsic_vrgather_vv_nxv32bf16_nxv32bf16_nxv32i16(<vscale x 32 x bfloat> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {3959; CHECK-LABEL: intrinsic_vrgather_vv_nxv32bf16_nxv32bf16_nxv32i16:3960; CHECK: # %bb.0: # %entry3961; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma3962; CHECK-NEXT: vrgather.vv v24, v8, v163963; CHECK-NEXT: vmv.v.v v8, v243964; CHECK-NEXT: ret3965entry:3966 %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vv.nxv32bf16.iXLen(3967 <vscale x 32 x bfloat> poison,3968 <vscale x 32 x bfloat> %0,3969 <vscale x 32 x i16> %1,3970 iXLen %2)3971 3972 ret <vscale x 32 x bfloat> %a3973}3974 3975define <vscale x 32 x bfloat> @intrinsic_vrgather_mask_vv_nxv32bf16_nxv32bf16_nxv32i16(<vscale x 32 x bfloat> %0, <vscale x 32 x bfloat> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {3976; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32bf16_nxv32bf16_nxv32i16:3977; CHECK: # %bb.0: # %entry3978; CHECK-NEXT: vl8re16.v v24, (a0)3979; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu3980; CHECK-NEXT: vrgather.vv v8, v16, v24, v0.t3981; CHECK-NEXT: ret3982entry:3983 %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv32bf16.iXLen(3984 <vscale x 32 x bfloat> %0,3985 <vscale x 32 x bfloat> %1,3986 <vscale x 32 x i16> %2,3987 <vscale x 32 x i1> %3,3988 iXLen %4, iXLen 1)3989 3990 ret <vscale x 32 x bfloat> %a3991}3992 3993define <vscale x 1 x bfloat> @intrinsic_vrgather_vx_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, iXLen %1, iXLen %2) nounwind {3994; CHECK-LABEL: intrinsic_vrgather_vx_nxv1bf16_nxv1bf16:3995; CHECK: # %bb.0: # %entry3996; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma3997; CHECK-NEXT: vrgather.vx v9, v8, a03998; CHECK-NEXT: vmv1r.v v8, v93999; CHECK-NEXT: ret4000entry:4001 %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.nxv1bf16.iXLen(4002 <vscale x 1 x bfloat> poison,4003 <vscale x 1 x bfloat> %0,4004 iXLen %1,4005 iXLen %2)4006 4007 ret <vscale x 1 x bfloat> %a4008}4009 4010define <vscale x 1 x bfloat> @intrinsic_vrgather_mask_vx_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, <vscale x 1 x bfloat> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {4011; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1bf16_nxv1bf16:4012; CHECK: # %bb.0: # %entry4013; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, mu4014; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t4015; CHECK-NEXT: ret4016entry:4017 %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv1bf16.iXLen(4018 <vscale x 1 x bfloat> %0,4019 <vscale x 1 x bfloat> %1,4020 iXLen %2,4021 <vscale x 1 x i1> %3,4022 iXLen %4, iXLen 1)4023 4024 ret <vscale x 1 x bfloat> %a4025}4026 4027define <vscale x 2 x bfloat> @intrinsic_vrgather_vx_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, iXLen %1, iXLen %2) nounwind {4028; CHECK-LABEL: intrinsic_vrgather_vx_nxv2bf16_nxv2bf16:4029; CHECK: # %bb.0: # %entry4030; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma4031; CHECK-NEXT: vrgather.vx v9, v8, a04032; CHECK-NEXT: vmv1r.v v8, v94033; CHECK-NEXT: ret4034entry:4035 %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.nxv2bf16.iXLen(4036 <vscale x 2 x bfloat> poison,4037 <vscale x 2 x bfloat> %0,4038 iXLen %1,4039 iXLen %2)4040 4041 ret <vscale x 2 x bfloat> %a4042}4043 4044define <vscale x 2 x bfloat> @intrinsic_vrgather_mask_vx_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, <vscale x 2 x bfloat> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {4045; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2bf16_nxv2bf16:4046; CHECK: # %bb.0: # %entry4047; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, mu4048; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t4049; CHECK-NEXT: ret4050entry:4051 %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv2bf1bf16XLen(4052 <vscale x 2 x bfloat> %0,4053 <vscale x 2 x bfloat> %1,4054 iXLen %2,4055 <vscale x 2 x i1> %3,4056 iXLen %4, iXLen 1)4057 4058 ret <vscale x 2 x bfloat> %a4059}4060 4061define <vscale x 4 x bfloat> @intrinsic_vrgather_vx_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, iXLen %1, iXLen %2) nounwind {4062; CHECK-LABEL: intrinsic_vrgather_vx_nxv4bf16_nxv4bf16:4063; CHECK: # %bb.0: # %entry4064; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma4065; CHECK-NEXT: vrgather.vx v9, v8, a04066; CHECK-NEXT: vmv.v.v v8, v94067; CHECK-NEXT: ret4068entry:4069 %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.nxv4bf16.iXLen(4070 <vscale x 4 x bfloat> poison,4071 <vscale x 4 x bfloat> %0,4072 iXLen %1,4073 iXLen %2)4074 4075 ret <vscale x 4 x bfloat> %a4076}4077 4078define <vscale x 4 x bfloat> @intrinsic_vrgather_mask_vx_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, <vscale x 4 x bfloat> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {4079; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4bf16_nxv4bf16:4080; CHECK: # %bb.0: # %entry4081; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, mu4082; CHECK-NEXT: vrgather.vx v8, v9, a0, v0.t4083; CHECK-NEXT: ret4084entry:4085 %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv4bf16.iXLen(4086 <vscale x 4 x bfloat> %0,4087 <vscale x 4 x bfloat> %1,4088 iXLen %2,4089 <vscale x 4 x i1> %3,4090 iXLen %4, iXLen 1)4091 4092 ret <vscale x 4 x bfloat> %a4093}4094 4095define <vscale x 8 x bfloat> @intrinsic_vrgather_vx_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, iXLen %1, iXLen %2) nounwind {4096; CHECK-LABEL: intrinsic_vrgather_vx_nxv8bf16_nxv8bf16:4097; CHECK: # %bb.0: # %entry4098; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma4099; CHECK-NEXT: vrgather.vx v10, v8, a04100; CHECK-NEXT: vmv.v.v v8, v104101; CHECK-NEXT: ret4102entry:4103 %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.nxv8bf16.iXLen(4104 <vscale x 8 x bfloat> poison,4105 <vscale x 8 x bfloat> %0,4106 iXLen %1,4107 iXLen %2)4108 4109 ret <vscale x 8 x bfloat> %a4110}4111 4112define <vscale x 8 x bfloat> @intrinsic_vrgather_mask_vx_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, <vscale x 8 x bfloat> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {4113; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8bf16_nxv8bf16:4114; CHECK: # %bb.0: # %entry4115; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, mu4116; CHECK-NEXT: vrgather.vx v8, v10, a0, v0.t4117; CHECK-NEXT: ret4118entry:4119 %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv8bf16.iXLen(4120 <vscale x 8 x bfloat> %0,4121 <vscale x 8 x bfloat> %1,4122 iXLen %2,4123 <vscale x 8 x i1> %3,4124 iXLen %4, iXLen 1)4125 4126 ret <vscale x 8 x bfloat> %a4127}4128 4129define <vscale x 16 x bfloat> @intrinsic_vrgather_vx_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, iXLen %1, iXLen %2) nounwind {4130; CHECK-LABEL: intrinsic_vrgather_vx_nxv16bf16_nxv16bf16:4131; CHECK: # %bb.0: # %entry4132; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma4133; CHECK-NEXT: vrgather.vx v12, v8, a04134; CHECK-NEXT: vmv.v.v v8, v124135; CHECK-NEXT: ret4136entry:4137 %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.nxv16bf16.iXLen(4138 <vscale x 16 x bfloat> poison,4139 <vscale x 16 x bfloat> %0,4140 iXLen %1,4141 iXLen %2)4142 4143 ret <vscale x 16 x bfloat> %a4144}4145 4146define <vscale x 16 x bfloat> @intrinsic_vrgather_mask_vx_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, <vscale x 16 x bfloat> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {4147; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16bf16_nxv16bf16:4148; CHECK: # %bb.0: # %entry4149; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu4150; CHECK-NEXT: vrgather.vx v8, v12, a0, v0.t4151; CHECK-NEXT: ret4152entry:4153 %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv16bf16.iXLen(4154 <vscale x 16 x bfloat> %0,4155 <vscale x 16 x bfloat> %1,4156 iXLen %2,4157 <vscale x 16 x i1> %3,4158 iXLen %4, iXLen 1)4159 4160 ret <vscale x 16 x bfloat> %a4161}4162 4163define <vscale x 32 x bfloat> @intrinsic_vrgather_vx_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, iXLen %1, iXLen %2) nounwind {4164; CHECK-LABEL: intrinsic_vrgather_vx_nxv32bf16_nxv32bf16:4165; CHECK: # %bb.0: # %entry4166; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma4167; CHECK-NEXT: vrgather.vx v16, v8, a04168; CHECK-NEXT: vmv.v.v v8, v164169; CHECK-NEXT: ret4170entry:4171 %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.nxv32bf16.iXLen(4172 <vscale x 32 x bfloat> poison,4173 <vscale x 32 x bfloat> %0,4174 iXLen %1,4175 iXLen %2)4176 4177 ret <vscale x 32 x bfloat> %a4178}4179 4180define <vscale x 32 x bfloat> @intrinsic_vrgather_mask_vx_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, <vscale x 32 x bfloat> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {4181; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32bf16_nxv32bf16:4182; CHECK: # %bb.0: # %entry4183; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, mu4184; CHECK-NEXT: vrgather.vx v8, v16, a0, v0.t4185; CHECK-NEXT: ret4186entry:4187 %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv32bf16.iXLen(4188 <vscale x 32 x bfloat> %0,4189 <vscale x 32 x bfloat> %1,4190 iXLen %2,4191 <vscale x 32 x i1> %3,4192 iXLen %4, iXLen 1)4193 4194 ret <vscale x 32 x bfloat> %a4195}4196 4197define <vscale x 1 x bfloat> @intrinsic_vrgather_vi_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, iXLen %1) nounwind {4198; CHECK-LABEL: intrinsic_vrgather_vi_nxv1bf16_nxv1bf16:4199; CHECK: # %bb.0: # %entry4200; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma4201; CHECK-NEXT: vrgather.vi v9, v8, 94202; CHECK-NEXT: vmv1r.v v8, v94203; CHECK-NEXT: ret4204entry:4205 %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.nxv1bf16.iXLen(4206 <vscale x 1 x bfloat> poison,4207 <vscale x 1 x bfloat> %0,4208 iXLen 9,4209 iXLen %1)4210 4211 ret <vscale x 1 x bfloat> %a4212}4213 4214define <vscale x 1 x bfloat> @intrinsic_vrgather_mask_vi_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, <vscale x 1 x bfloat> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {4215; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1bf16_nxv1bf16:4216; CHECK: # %bb.0: # %entry4217; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu4218; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t4219; CHECK-NEXT: ret4220entry:4221 %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv1bf16.iXLen(4222 <vscale x 1 x bfloat> %0,4223 <vscale x 1 x bfloat> %1,4224 iXLen 9,4225 <vscale x 1 x i1> %2,4226 iXLen %3, iXLen 1)4227 4228 ret <vscale x 1 x bfloat> %a4229}4230 4231define <vscale x 2 x bfloat> @intrinsic_vrgather_vi_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, iXLen %1) nounwind {4232; CHECK-LABEL: intrinsic_vrgather_vi_nxv2bf16_nxv2bf16:4233; CHECK: # %bb.0: # %entry4234; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma4235; CHECK-NEXT: vrgather.vi v9, v8, 94236; CHECK-NEXT: vmv1r.v v8, v94237; CHECK-NEXT: ret4238entry:4239 %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.nxv2bf16.iXLen(4240 <vscale x 2 x bfloat> poison,4241 <vscale x 2 x bfloat> %0,4242 iXLen 9,4243 iXLen %1)4244 4245 ret <vscale x 2 x bfloat> %a4246}4247 4248define <vscale x 2 x bfloat> @intrinsic_vrgather_mask_vi_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, <vscale x 2 x bfloat> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {4249; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2bf16_nxv2bf16:4250; CHECK: # %bb.0: # %entry4251; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu4252; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t4253; CHECK-NEXT: ret4254entry:4255 %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv2bf16.iXLen(4256 <vscale x 2 x bfloat> %0,4257 <vscale x 2 x bfloat> %1,4258 iXLen 9,4259 <vscale x 2 x i1> %2,4260 iXLen %3, iXLen 1)4261 4262 ret <vscale x 2 x bfloat> %a4263}4264 4265define <vscale x 4 x bfloat> @intrinsic_vrgather_vi_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, iXLen %1) nounwind {4266; CHECK-LABEL: intrinsic_vrgather_vi_nxv4bf16_nxv4bf16:4267; CHECK: # %bb.0: # %entry4268; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma4269; CHECK-NEXT: vrgather.vi v9, v8, 94270; CHECK-NEXT: vmv.v.v v8, v94271; CHECK-NEXT: ret4272entry:4273 %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.nxv4bf16.iXLen(4274 <vscale x 4 x bfloat> poison,4275 <vscale x 4 x bfloat> %0,4276 iXLen 9,4277 iXLen %1)4278 4279 ret <vscale x 4 x bfloat> %a4280}4281 4282define <vscale x 4 x bfloat> @intrinsic_vrgather_mask_vi_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, <vscale x 4 x bfloat> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {4283; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4bf16_nxv4bf16:4284; CHECK: # %bb.0: # %entry4285; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu4286; CHECK-NEXT: vrgather.vi v8, v9, 9, v0.t4287; CHECK-NEXT: ret4288entry:4289 %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv4bf16.iXLen(4290 <vscale x 4 x bfloat> %0,4291 <vscale x 4 x bfloat> %1,4292 iXLen 9,4293 <vscale x 4 x i1> %2,4294 iXLen %3, iXLen 1)4295 4296 ret <vscale x 4 x bfloat> %a4297}4298 4299define <vscale x 8 x bfloat> @intrinsic_vrgather_vi_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, iXLen %1) nounwind {4300; CHECK-LABEL: intrinsic_vrgather_vi_nxv8bf16_nxv8bf16:4301; CHECK: # %bb.0: # %entry4302; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma4303; CHECK-NEXT: vrgather.vi v10, v8, 94304; CHECK-NEXT: vmv.v.v v8, v104305; CHECK-NEXT: ret4306entry:4307 %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.nxv8bf16.iXLen(4308 <vscale x 8 x bfloat> poison,4309 <vscale x 8 x bfloat> %0,4310 iXLen 9,4311 iXLen %1)4312 4313 ret <vscale x 8 x bfloat> %a4314}4315 4316define <vscale x 8 x bfloat> @intrinsic_vrgather_mask_vi_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, <vscale x 8 x bfloat> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {4317; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8bf16_nxv8bf16:4318; CHECK: # %bb.0: # %entry4319; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu4320; CHECK-NEXT: vrgather.vi v8, v10, 9, v0.t4321; CHECK-NEXT: ret4322entry:4323 %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv8bf16.iXLen(4324 <vscale x 8 x bfloat> %0,4325 <vscale x 8 x bfloat> %1,4326 iXLen 9,4327 <vscale x 8 x i1> %2,4328 iXLen %3, iXLen 1)4329 4330 ret <vscale x 8 x bfloat> %a4331}4332 4333define <vscale x 16 x bfloat> @intrinsic_vrgather_vi_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, iXLen %1) nounwind {4334; CHECK-LABEL: intrinsic_vrgather_vi_nxv16bf16_nxv16bf16:4335; CHECK: # %bb.0: # %entry4336; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma4337; CHECK-NEXT: vrgather.vi v12, v8, 94338; CHECK-NEXT: vmv.v.v v8, v124339; CHECK-NEXT: ret4340entry:4341 %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.nxv16bf16.iXLen(4342 <vscale x 16 x bfloat> poison,4343 <vscale x 16 x bfloat> %0,4344 iXLen 9,4345 iXLen %1)4346 4347 ret <vscale x 16 x bfloat> %a4348}4349 4350define <vscale x 16 x bfloat> @intrinsic_vrgather_mask_vi_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, <vscale x 16 x bfloat> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {4351; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16bf16_nxv16bf16:4352; CHECK: # %bb.0: # %entry4353; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, mu4354; CHECK-NEXT: vrgather.vi v8, v12, 9, v0.t4355; CHECK-NEXT: ret4356entry:4357 %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv16bf16.iXLen(4358 <vscale x 16 x bfloat> %0,4359 <vscale x 16 x bfloat> %1,4360 iXLen 9,4361 <vscale x 16 x i1> %2,4362 iXLen %3, iXLen 1)4363 4364 ret <vscale x 16 x bfloat> %a4365}4366 4367define <vscale x 32 x bfloat> @intrinsic_vrgather_vi_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, iXLen %1) nounwind {4368; CHECK-LABEL: intrinsic_vrgather_vi_nxv32bf16_nxv32bf16:4369; CHECK: # %bb.0: # %entry4370; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma4371; CHECK-NEXT: vrgather.vi v16, v8, 94372; CHECK-NEXT: vmv.v.v v8, v164373; CHECK-NEXT: ret4374entry:4375 %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.nxv32bf16.iXLen(4376 <vscale x 32 x bfloat> poison,4377 <vscale x 32 x bfloat> %0,4378 iXLen 9,4379 iXLen %1)4380 4381 ret <vscale x 32 x bfloat> %a4382}4383 4384define <vscale x 32 x bfloat> @intrinsic_vrgather_mask_vi_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, <vscale x 32 x bfloat> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {4385; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32bf16_nxv32bf16:4386; CHECK: # %bb.0: # %entry4387; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, mu4388; CHECK-NEXT: vrgather.vi v8, v16, 9, v0.t4389; CHECK-NEXT: ret4390entry:4391 %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv32bf16.iXLen(4392 <vscale x 32 x bfloat> %0,4393 <vscale x 32 x bfloat> %1,4394 iXLen 9,4395 <vscale x 32 x i1> %2,4396 iXLen %3, iXLen 1)4397 4398 ret <vscale x 32 x bfloat> %a4399}4400 4401