70 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 52// REQUIRES: riscv-registered-target3// RUN: %clang_cc1 -triple riscv64 -target-feature +v \4// RUN: -target-feature +experimental-zvfbfa -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 bfloat @test_vfmv_f_s_bf16mf4_bf16(11// CHECK-RV64-SAME: <vscale x 1 x bfloat> [[SRC:%.*]]) #[[ATTR0:[0-9]+]] {12// CHECK-RV64-NEXT: [[ENTRY:.*:]]13// CHECK-RV64-NEXT: [[TMP0:%.*]] = call bfloat @llvm.riscv.vfmv.f.s.nxv1bf16(<vscale x 1 x bfloat> [[SRC]])14// CHECK-RV64-NEXT: ret bfloat [[TMP0]]15//16__bf16 test_vfmv_f_s_bf16mf4_bf16(vbfloat16mf4_t src) {17 return __riscv_vfmv_f(src);18}19 20// CHECK-RV64-LABEL: define dso_local bfloat @test_vfmv_f_s_bf16mf2_bf16(21// CHECK-RV64-SAME: <vscale x 2 x bfloat> [[SRC:%.*]]) #[[ATTR0]] {22// CHECK-RV64-NEXT: [[ENTRY:.*:]]23// CHECK-RV64-NEXT: [[TMP0:%.*]] = call bfloat @llvm.riscv.vfmv.f.s.nxv2bf16(<vscale x 2 x bfloat> [[SRC]])24// CHECK-RV64-NEXT: ret bfloat [[TMP0]]25//26__bf16 test_vfmv_f_s_bf16mf2_bf16(vbfloat16mf2_t src) {27 return __riscv_vfmv_f(src);28}29 30// CHECK-RV64-LABEL: define dso_local bfloat @test_vfmv_f_s_bf16m1_bf16(31// CHECK-RV64-SAME: <vscale x 4 x bfloat> [[SRC:%.*]]) #[[ATTR0]] {32// CHECK-RV64-NEXT: [[ENTRY:.*:]]33// CHECK-RV64-NEXT: [[TMP0:%.*]] = call bfloat @llvm.riscv.vfmv.f.s.nxv4bf16(<vscale x 4 x bfloat> [[SRC]])34// CHECK-RV64-NEXT: ret bfloat [[TMP0]]35//36__bf16 test_vfmv_f_s_bf16m1_bf16(vbfloat16m1_t src) {37 return __riscv_vfmv_f(src);38}39 40// CHECK-RV64-LABEL: define dso_local bfloat @test_vfmv_f_s_bf16m2_bf16(41// CHECK-RV64-SAME: <vscale x 8 x bfloat> [[SRC:%.*]]) #[[ATTR0]] {42// CHECK-RV64-NEXT: [[ENTRY:.*:]]43// CHECK-RV64-NEXT: [[TMP0:%.*]] = call bfloat @llvm.riscv.vfmv.f.s.nxv8bf16(<vscale x 8 x bfloat> [[SRC]])44// CHECK-RV64-NEXT: ret bfloat [[TMP0]]45//46__bf16 test_vfmv_f_s_bf16m2_bf16(vbfloat16m2_t src) {47 return __riscv_vfmv_f(src);48}49 50// CHECK-RV64-LABEL: define dso_local bfloat @test_vfmv_f_s_bf16m4_bf16(51// CHECK-RV64-SAME: <vscale x 16 x bfloat> [[SRC:%.*]]) #[[ATTR0]] {52// CHECK-RV64-NEXT: [[ENTRY:.*:]]53// CHECK-RV64-NEXT: [[TMP0:%.*]] = call bfloat @llvm.riscv.vfmv.f.s.nxv16bf16(<vscale x 16 x bfloat> [[SRC]])54// CHECK-RV64-NEXT: ret bfloat [[TMP0]]55//56__bf16 test_vfmv_f_s_bf16m4_bf16(vbfloat16m4_t src) {57 return __riscv_vfmv_f(src);58}59 60// CHECK-RV64-LABEL: define dso_local bfloat @test_vfmv_f_s_bf16m8_bf16(61// CHECK-RV64-SAME: <vscale x 32 x bfloat> [[SRC:%.*]]) #[[ATTR0]] {62// CHECK-RV64-NEXT: [[ENTRY:.*:]]63// CHECK-RV64-NEXT: [[TMP0:%.*]] = call bfloat @llvm.riscv.vfmv.f.s.nxv32bf16(<vscale x 32 x bfloat> [[SRC]])64// CHECK-RV64-NEXT: ret bfloat [[TMP0]]65//66__bf16 test_vfmv_f_s_bf16m8_bf16(vbfloat16m8_t src) {67 return __riscv_vfmv_f(src);68}69 70