eopXD updated this revision to Diff 487206. eopXD marked an inline comment as not done. eopXD added a comment.
Update code. Apply suggestion from @pcwang-thead. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D141032/new/ https://reviews.llvm.org/D141032 Files: clang/include/clang/Basic/riscv_vector.td clang/test/CodeGen/RISCV/rvv-intrinsics/vlenb.c Index: clang/test/CodeGen/RISCV/rvv-intrinsics/vlenb.c =================================================================== --- /dev/null +++ clang/test/CodeGen/RISCV/rvv-intrinsics/vlenb.c @@ -0,0 +1,15 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py +// REQUIRES: riscv-registered-target +// RUN: %clang_cc1 -triple riscv64 -target-feature +v -disable-O0-optnone -emit-llvm %s -o - \ +// RUN: | opt -S -O2 | FileCheck %s + +#include <riscv_vector.h> + +// CHECK-LABEL: @test_vlenb( +// CHECK-NEXT: entry: +// CHECK-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.read_register.i64(metadata [[META4:![0-9]+]]) +// CHECK-NEXT: ret i64 [[TMP0]] +// +unsigned long test_vlenb(void) { + return vlenb(); +} Index: clang/include/clang/Basic/riscv_vector.td =================================================================== --- clang/include/clang/Basic/riscv_vector.td +++ clang/include/clang/Basic/riscv_vector.td @@ -1558,6 +1558,32 @@ }] in def vread_vwrite_csr: RVVHeader; +let HeaderCode = +[{ +#define vlenb() __builtin_rvv_vlenb() +}] in +def vlenb_macro: RVVHeader; + +let HasBuiltinAlias = false, HasVL = false, HasMasked = false, + UnMaskedPolicyScheme = NonePolicy, MaskedPolicyScheme = NonePolicy, + Log2LMUL = [0], IRName = "", + ManualCodegen = [{ + { + LLVMContext &Context = CGM.getLLVMContext(); + llvm::MDBuilder MDHelper(Context); + + llvm::Metadata *Ops[] = {llvm::MDString::get(Context, "vlenb")}; + llvm::MDNode *RegName = llvm::MDNode::get(Context, Ops); + llvm::Value *Metadata = llvm::MetadataAsValue::get(Context, RegName); + llvm::Function *F = + CGM.getIntrinsic(llvm::Intrinsic::read_register, {Int64Ty}); + return Builder.CreateCall(F, Metadata); + } + }] in +{ + def vlenb : RVVBuiltin<"", "u", "i">; +} + // 6. Configuration-Setting Instructions // 6.1. vsetvli/vsetvl instructions
Index: clang/test/CodeGen/RISCV/rvv-intrinsics/vlenb.c =================================================================== --- /dev/null +++ clang/test/CodeGen/RISCV/rvv-intrinsics/vlenb.c @@ -0,0 +1,15 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py +// REQUIRES: riscv-registered-target +// RUN: %clang_cc1 -triple riscv64 -target-feature +v -disable-O0-optnone -emit-llvm %s -o - \ +// RUN: | opt -S -O2 | FileCheck %s + +#include <riscv_vector.h> + +// CHECK-LABEL: @test_vlenb( +// CHECK-NEXT: entry: +// CHECK-NEXT: [[TMP0:%.*]] = tail call i64 @llvm.read_register.i64(metadata [[META4:![0-9]+]]) +// CHECK-NEXT: ret i64 [[TMP0]] +// +unsigned long test_vlenb(void) { + return vlenb(); +} Index: clang/include/clang/Basic/riscv_vector.td =================================================================== --- clang/include/clang/Basic/riscv_vector.td +++ clang/include/clang/Basic/riscv_vector.td @@ -1558,6 +1558,32 @@ }] in def vread_vwrite_csr: RVVHeader; +let HeaderCode = +[{ +#define vlenb() __builtin_rvv_vlenb() +}] in +def vlenb_macro: RVVHeader; + +let HasBuiltinAlias = false, HasVL = false, HasMasked = false, + UnMaskedPolicyScheme = NonePolicy, MaskedPolicyScheme = NonePolicy, + Log2LMUL = [0], IRName = "", + ManualCodegen = [{ + { + LLVMContext &Context = CGM.getLLVMContext(); + llvm::MDBuilder MDHelper(Context); + + llvm::Metadata *Ops[] = {llvm::MDString::get(Context, "vlenb")}; + llvm::MDNode *RegName = llvm::MDNode::get(Context, Ops); + llvm::Value *Metadata = llvm::MetadataAsValue::get(Context, RegName); + llvm::Function *F = + CGM.getIntrinsic(llvm::Intrinsic::read_register, {Int64Ty}); + return Builder.CreateCall(F, Metadata); + } + }] in +{ + def vlenb : RVVBuiltin<"", "u", "i">; +} + // 6. Configuration-Setting Instructions // 6.1. vsetvli/vsetvl instructions
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits