291 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 42// REQUIRES: riscv-registered-target3// RUN: %clang_cc1 -triple riscv64 -target-feature +zve64x \4// RUN: -target-feature +zvfbfmin -disable-O0-optnone \5// RUN: -emit-llvm %s -o - | opt -S -passes=mem2reg | \6// RUN: FileCheck --check-prefix=CHECK-RV64 %s7 8#include <riscv_vector.h>9 10// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_vloxei8_v_bf16mf4_tu(11// CHECK-RV64-SAME: <vscale x 1 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 1 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] {12// CHECK-RV64-NEXT: entry:13// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.vloxei.nxv1bf16.p0.nxv1i8.i64(<vscale x 1 x bfloat> [[VD]], ptr [[RS1]], <vscale x 1 x i8> [[RS2]], i64 [[VL]])14// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]15//16vbfloat16mf4_t test_vloxei8_v_bf16mf4_tu(vbfloat16mf4_t vd, const __bf16 *rs1,17 vuint8mf8_t rs2, size_t vl) {18 return __riscv_vloxei8_tu(vd, rs1, rs2, vl);19}20 21// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_vloxei8_v_bf16mf2_tu(22// CHECK-RV64-SAME: <vscale x 2 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 2 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {23// CHECK-RV64-NEXT: entry:24// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.vloxei.nxv2bf16.p0.nxv2i8.i64(<vscale x 2 x bfloat> [[VD]], ptr [[RS1]], <vscale x 2 x i8> [[RS2]], i64 [[VL]])25// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]26//27vbfloat16mf2_t test_vloxei8_v_bf16mf2_tu(vbfloat16mf2_t vd, const __bf16 *rs1,28 vuint8mf4_t rs2, size_t vl) {29 return __riscv_vloxei8_tu(vd, rs1, rs2, vl);30}31 32// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_vloxei8_v_bf16m1_tu(33// CHECK-RV64-SAME: <vscale x 4 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 4 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {34// CHECK-RV64-NEXT: entry:35// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.vloxei.nxv4bf16.p0.nxv4i8.i64(<vscale x 4 x bfloat> [[VD]], ptr [[RS1]], <vscale x 4 x i8> [[RS2]], i64 [[VL]])36// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]37//38vbfloat16m1_t test_vloxei8_v_bf16m1_tu(vbfloat16m1_t vd, const __bf16 *rs1,39 vuint8mf2_t rs2, size_t vl) {40 return __riscv_vloxei8_tu(vd, rs1, rs2, vl);41}42 43// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_vloxei8_v_bf16m2_tu(44// CHECK-RV64-SAME: <vscale x 8 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 8 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {45// CHECK-RV64-NEXT: entry:46// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.vloxei.nxv8bf16.p0.nxv8i8.i64(<vscale x 8 x bfloat> [[VD]], ptr [[RS1]], <vscale x 8 x i8> [[RS2]], i64 [[VL]])47// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]48//49vbfloat16m2_t test_vloxei8_v_bf16m2_tu(vbfloat16m2_t vd, const __bf16 *rs1,50 vuint8m1_t rs2, size_t vl) {51 return __riscv_vloxei8_tu(vd, rs1, rs2, vl);52}53 54// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_vloxei8_v_bf16m4_tu(55// CHECK-RV64-SAME: <vscale x 16 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 16 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {56// CHECK-RV64-NEXT: entry:57// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.vloxei.nxv16bf16.p0.nxv16i8.i64(<vscale x 16 x bfloat> [[VD]], ptr [[RS1]], <vscale x 16 x i8> [[RS2]], i64 [[VL]])58// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]59//60vbfloat16m4_t test_vloxei8_v_bf16m4_tu(vbfloat16m4_t vd, const __bf16 *rs1,61 vuint8m2_t rs2, size_t vl) {62 return __riscv_vloxei8_tu(vd, rs1, rs2, vl);63}64 65// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_vloxei8_v_bf16m8_tu(66// CHECK-RV64-SAME: <vscale x 32 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 32 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {67// CHECK-RV64-NEXT: entry:68// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.vloxei.nxv32bf16.p0.nxv32i8.i64(<vscale x 32 x bfloat> [[VD]], ptr [[RS1]], <vscale x 32 x i8> [[RS2]], i64 [[VL]])69// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]70//71vbfloat16m8_t test_vloxei8_v_bf16m8_tu(vbfloat16m8_t vd, const __bf16 *rs1,72 vuint8m4_t rs2, size_t vl) {73 return __riscv_vloxei8_tu(vd, rs1, rs2, vl);74}75 76// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_vloxei8_v_bf16mf4_tum(77// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 1 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {78// CHECK-RV64-NEXT: entry:79// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.vloxei.mask.nxv1bf16.p0.nxv1i8.i64(<vscale x 1 x bfloat> [[VD]], ptr [[RS1]], <vscale x 1 x i8> [[RS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 2)80// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]81//82vbfloat16mf4_t test_vloxei8_v_bf16mf4_tum(vbool64_t vm, vbfloat16mf4_t vd,83 const __bf16 *rs1, vuint8mf8_t rs2,84 size_t vl) {85 return __riscv_vloxei8_tum(vm, vd, rs1, rs2, vl);86}87 88// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_vloxei8_v_bf16mf2_tum(89// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 2 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {90// CHECK-RV64-NEXT: entry:91// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.vloxei.mask.nxv2bf16.p0.nxv2i8.i64(<vscale x 2 x bfloat> [[VD]], ptr [[RS1]], <vscale x 2 x i8> [[RS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 2)92// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]93//94vbfloat16mf2_t test_vloxei8_v_bf16mf2_tum(vbool32_t vm, vbfloat16mf2_t vd,95 const __bf16 *rs1, vuint8mf4_t rs2,96 size_t vl) {97 return __riscv_vloxei8_tum(vm, vd, rs1, rs2, vl);98}99 100// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_vloxei8_v_bf16m1_tum(101// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 4 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {102// CHECK-RV64-NEXT: entry:103// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.vloxei.mask.nxv4bf16.p0.nxv4i8.i64(<vscale x 4 x bfloat> [[VD]], ptr [[RS1]], <vscale x 4 x i8> [[RS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 2)104// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]105//106vbfloat16m1_t test_vloxei8_v_bf16m1_tum(vbool16_t vm, vbfloat16m1_t vd,107 const __bf16 *rs1, vuint8mf2_t rs2,108 size_t vl) {109 return __riscv_vloxei8_tum(vm, vd, rs1, rs2, vl);110}111 112// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_vloxei8_v_bf16m2_tum(113// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 8 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {114// CHECK-RV64-NEXT: entry:115// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.vloxei.mask.nxv8bf16.p0.nxv8i8.i64(<vscale x 8 x bfloat> [[VD]], ptr [[RS1]], <vscale x 8 x i8> [[RS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 2)116// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]117//118vbfloat16m2_t test_vloxei8_v_bf16m2_tum(vbool8_t vm, vbfloat16m2_t vd,119 const __bf16 *rs1, vuint8m1_t rs2,120 size_t vl) {121 return __riscv_vloxei8_tum(vm, vd, rs1, rs2, vl);122}123 124// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_vloxei8_v_bf16m4_tum(125// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 16 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {126// CHECK-RV64-NEXT: entry:127// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.vloxei.mask.nxv16bf16.p0.nxv16i8.i64(<vscale x 16 x bfloat> [[VD]], ptr [[RS1]], <vscale x 16 x i8> [[RS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 2)128// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]129//130vbfloat16m4_t test_vloxei8_v_bf16m4_tum(vbool4_t vm, vbfloat16m4_t vd,131 const __bf16 *rs1, vuint8m2_t rs2,132 size_t vl) {133 return __riscv_vloxei8_tum(vm, vd, rs1, rs2, vl);134}135 136// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_vloxei8_v_bf16m8_tum(137// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 32 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {138// CHECK-RV64-NEXT: entry:139// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.vloxei.mask.nxv32bf16.p0.nxv32i8.i64(<vscale x 32 x bfloat> [[VD]], ptr [[RS1]], <vscale x 32 x i8> [[RS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 2)140// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]141//142vbfloat16m8_t test_vloxei8_v_bf16m8_tum(vbool2_t vm, vbfloat16m8_t vd,143 const __bf16 *rs1, vuint8m4_t rs2,144 size_t vl) {145 return __riscv_vloxei8_tum(vm, vd, rs1, rs2, vl);146}147 148// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_vloxei8_v_bf16mf4_tumu(149// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 1 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {150// CHECK-RV64-NEXT: entry:151// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.vloxei.mask.nxv1bf16.p0.nxv1i8.i64(<vscale x 1 x bfloat> [[VD]], ptr [[RS1]], <vscale x 1 x i8> [[RS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 0)152// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]153//154vbfloat16mf4_t test_vloxei8_v_bf16mf4_tumu(vbool64_t vm, vbfloat16mf4_t vd,155 const __bf16 *rs1, vuint8mf8_t rs2,156 size_t vl) {157 return __riscv_vloxei8_tumu(vm, vd, rs1, rs2, vl);158}159 160// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_vloxei8_v_bf16mf2_tumu(161// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 2 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {162// CHECK-RV64-NEXT: entry:163// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.vloxei.mask.nxv2bf16.p0.nxv2i8.i64(<vscale x 2 x bfloat> [[VD]], ptr [[RS1]], <vscale x 2 x i8> [[RS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 0)164// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]165//166vbfloat16mf2_t test_vloxei8_v_bf16mf2_tumu(vbool32_t vm, vbfloat16mf2_t vd,167 const __bf16 *rs1, vuint8mf4_t rs2,168 size_t vl) {169 return __riscv_vloxei8_tumu(vm, vd, rs1, rs2, vl);170}171 172// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_vloxei8_v_bf16m1_tumu(173// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 4 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {174// CHECK-RV64-NEXT: entry:175// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.vloxei.mask.nxv4bf16.p0.nxv4i8.i64(<vscale x 4 x bfloat> [[VD]], ptr [[RS1]], <vscale x 4 x i8> [[RS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 0)176// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]177//178vbfloat16m1_t test_vloxei8_v_bf16m1_tumu(vbool16_t vm, vbfloat16m1_t vd,179 const __bf16 *rs1, vuint8mf2_t rs2,180 size_t vl) {181 return __riscv_vloxei8_tumu(vm, vd, rs1, rs2, vl);182}183 184// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_vloxei8_v_bf16m2_tumu(185// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 8 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {186// CHECK-RV64-NEXT: entry:187// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.vloxei.mask.nxv8bf16.p0.nxv8i8.i64(<vscale x 8 x bfloat> [[VD]], ptr [[RS1]], <vscale x 8 x i8> [[RS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 0)188// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]189//190vbfloat16m2_t test_vloxei8_v_bf16m2_tumu(vbool8_t vm, vbfloat16m2_t vd,191 const __bf16 *rs1, vuint8m1_t rs2,192 size_t vl) {193 return __riscv_vloxei8_tumu(vm, vd, rs1, rs2, vl);194}195 196// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_vloxei8_v_bf16m4_tumu(197// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 16 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {198// CHECK-RV64-NEXT: entry:199// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.vloxei.mask.nxv16bf16.p0.nxv16i8.i64(<vscale x 16 x bfloat> [[VD]], ptr [[RS1]], <vscale x 16 x i8> [[RS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 0)200// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]201//202vbfloat16m4_t test_vloxei8_v_bf16m4_tumu(vbool4_t vm, vbfloat16m4_t vd,203 const __bf16 *rs1, vuint8m2_t rs2,204 size_t vl) {205 return __riscv_vloxei8_tumu(vm, vd, rs1, rs2, vl);206}207 208// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_vloxei8_v_bf16m8_tumu(209// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 32 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {210// CHECK-RV64-NEXT: entry:211// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.vloxei.mask.nxv32bf16.p0.nxv32i8.i64(<vscale x 32 x bfloat> [[VD]], ptr [[RS1]], <vscale x 32 x i8> [[RS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 0)212// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]213//214vbfloat16m8_t test_vloxei8_v_bf16m8_tumu(vbool2_t vm, vbfloat16m8_t vd,215 const __bf16 *rs1, vuint8m4_t rs2,216 size_t vl) {217 return __riscv_vloxei8_tumu(vm, vd, rs1, rs2, vl);218}219 220// CHECK-RV64-LABEL: define dso_local <vscale x 1 x bfloat> @test_vloxei8_v_bf16mf4_mu(221// CHECK-RV64-SAME: <vscale x 1 x i1> [[VM:%.*]], <vscale x 1 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 1 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {222// CHECK-RV64-NEXT: entry:223// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x bfloat> @llvm.riscv.vloxei.mask.nxv1bf16.p0.nxv1i8.i64(<vscale x 1 x bfloat> [[VD]], ptr [[RS1]], <vscale x 1 x i8> [[RS2]], <vscale x 1 x i1> [[VM]], i64 [[VL]], i64 1)224// CHECK-RV64-NEXT: ret <vscale x 1 x bfloat> [[TMP0]]225//226vbfloat16mf4_t test_vloxei8_v_bf16mf4_mu(vbool64_t vm, vbfloat16mf4_t vd,227 const __bf16 *rs1, vuint8mf8_t rs2,228 size_t vl) {229 return __riscv_vloxei8_mu(vm, vd, rs1, rs2, vl);230}231 232// CHECK-RV64-LABEL: define dso_local <vscale x 2 x bfloat> @test_vloxei8_v_bf16mf2_mu(233// CHECK-RV64-SAME: <vscale x 2 x i1> [[VM:%.*]], <vscale x 2 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 2 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {234// CHECK-RV64-NEXT: entry:235// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x bfloat> @llvm.riscv.vloxei.mask.nxv2bf16.p0.nxv2i8.i64(<vscale x 2 x bfloat> [[VD]], ptr [[RS1]], <vscale x 2 x i8> [[RS2]], <vscale x 2 x i1> [[VM]], i64 [[VL]], i64 1)236// CHECK-RV64-NEXT: ret <vscale x 2 x bfloat> [[TMP0]]237//238vbfloat16mf2_t test_vloxei8_v_bf16mf2_mu(vbool32_t vm, vbfloat16mf2_t vd,239 const __bf16 *rs1, vuint8mf4_t rs2,240 size_t vl) {241 return __riscv_vloxei8_mu(vm, vd, rs1, rs2, vl);242}243 244// CHECK-RV64-LABEL: define dso_local <vscale x 4 x bfloat> @test_vloxei8_v_bf16m1_mu(245// CHECK-RV64-SAME: <vscale x 4 x i1> [[VM:%.*]], <vscale x 4 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 4 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {246// CHECK-RV64-NEXT: entry:247// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 4 x bfloat> @llvm.riscv.vloxei.mask.nxv4bf16.p0.nxv4i8.i64(<vscale x 4 x bfloat> [[VD]], ptr [[RS1]], <vscale x 4 x i8> [[RS2]], <vscale x 4 x i1> [[VM]], i64 [[VL]], i64 1)248// CHECK-RV64-NEXT: ret <vscale x 4 x bfloat> [[TMP0]]249//250vbfloat16m1_t test_vloxei8_v_bf16m1_mu(vbool16_t vm, vbfloat16m1_t vd,251 const __bf16 *rs1, vuint8mf2_t rs2,252 size_t vl) {253 return __riscv_vloxei8_mu(vm, vd, rs1, rs2, vl);254}255 256// CHECK-RV64-LABEL: define dso_local <vscale x 8 x bfloat> @test_vloxei8_v_bf16m2_mu(257// CHECK-RV64-SAME: <vscale x 8 x i1> [[VM:%.*]], <vscale x 8 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 8 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {258// CHECK-RV64-NEXT: entry:259// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 8 x bfloat> @llvm.riscv.vloxei.mask.nxv8bf16.p0.nxv8i8.i64(<vscale x 8 x bfloat> [[VD]], ptr [[RS1]], <vscale x 8 x i8> [[RS2]], <vscale x 8 x i1> [[VM]], i64 [[VL]], i64 1)260// CHECK-RV64-NEXT: ret <vscale x 8 x bfloat> [[TMP0]]261//262vbfloat16m2_t test_vloxei8_v_bf16m2_mu(vbool8_t vm, vbfloat16m2_t vd,263 const __bf16 *rs1, vuint8m1_t rs2,264 size_t vl) {265 return __riscv_vloxei8_mu(vm, vd, rs1, rs2, vl);266}267 268// CHECK-RV64-LABEL: define dso_local <vscale x 16 x bfloat> @test_vloxei8_v_bf16m4_mu(269// CHECK-RV64-SAME: <vscale x 16 x i1> [[VM:%.*]], <vscale x 16 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 16 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {270// CHECK-RV64-NEXT: entry:271// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 16 x bfloat> @llvm.riscv.vloxei.mask.nxv16bf16.p0.nxv16i8.i64(<vscale x 16 x bfloat> [[VD]], ptr [[RS1]], <vscale x 16 x i8> [[RS2]], <vscale x 16 x i1> [[VM]], i64 [[VL]], i64 1)272// CHECK-RV64-NEXT: ret <vscale x 16 x bfloat> [[TMP0]]273//274vbfloat16m4_t test_vloxei8_v_bf16m4_mu(vbool4_t vm, vbfloat16m4_t vd,275 const __bf16 *rs1, vuint8m2_t rs2,276 size_t vl) {277 return __riscv_vloxei8_mu(vm, vd, rs1, rs2, vl);278}279 280// CHECK-RV64-LABEL: define dso_local <vscale x 32 x bfloat> @test_vloxei8_v_bf16m8_mu(281// CHECK-RV64-SAME: <vscale x 32 x i1> [[VM:%.*]], <vscale x 32 x bfloat> [[VD:%.*]], ptr noundef [[RS1:%.*]], <vscale x 32 x i8> [[RS2:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] {282// CHECK-RV64-NEXT: entry:283// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 32 x bfloat> @llvm.riscv.vloxei.mask.nxv32bf16.p0.nxv32i8.i64(<vscale x 32 x bfloat> [[VD]], ptr [[RS1]], <vscale x 32 x i8> [[RS2]], <vscale x 32 x i1> [[VM]], i64 [[VL]], i64 1)284// CHECK-RV64-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]285//286vbfloat16m8_t test_vloxei8_v_bf16m8_mu(vbool2_t vm, vbfloat16m8_t vd,287 const __bf16 *rs1, vuint8m4_t rs2,288 size_t vl) {289 return __riscv_vloxei8_mu(vm, vd, rs1, rs2, vl);290}291