Author: Jianjian Guan Date: 2026-05-06T11:11:48+08:00 New Revision: 7df4736d9713aad9ad29853a149fb7189dfa661b
URL: https://github.com/llvm/llvm-project/commit/7df4736d9713aad9ad29853a149fb7189dfa661b DIFF: https://github.com/llvm/llvm-project/commit/7df4736d9713aad9ad29853a149fb7189dfa661b.diff LOG: [CIR][RISCV] Support zbkb builtin codegen (#195401) Include 4 builtins: __builtin_riscv_brev8_32, __builtin_riscv_brev8_64, __builtin_riscv_zip_32, __builtin_riscv_unzip_32. Added: clang/test/CIR/CodeGenBuiltins/RISCV/riscv-zbkb.c Modified: clang/lib/CIR/CodeGen/CIRGenBuiltinRISCV.cpp Removed: ################################################################################ diff --git a/clang/lib/CIR/CodeGen/CIRGenBuiltinRISCV.cpp b/clang/lib/CIR/CodeGen/CIRGenBuiltinRISCV.cpp index be861fe1eb90e..bbd1cd8d04401 100644 --- a/clang/lib/CIR/CodeGen/CIRGenBuiltinRISCV.cpp +++ b/clang/lib/CIR/CodeGen/CIRGenBuiltinRISCV.cpp @@ -82,9 +82,18 @@ CIRGenFunction::emitRISCVBuiltinExpr(unsigned builtinID, const CallExpr *e) { } // Zbkb case RISCV::BI__builtin_riscv_brev8_32: - case RISCV::BI__builtin_riscv_brev8_64: - case RISCV::BI__builtin_riscv_zip_32: - case RISCV::BI__builtin_riscv_unzip_32: + case RISCV::BI__builtin_riscv_brev8_64: { + intrinsicName = "riscv.brev8"; + break; + } + case RISCV::BI__builtin_riscv_zip_32: { + intrinsicName = "riscv.zip"; + break; + } + case RISCV::BI__builtin_riscv_unzip_32: { + intrinsicName = "riscv.unzip"; + break; + } // Zknh case RISCV::BI__builtin_riscv_sha256sig0: case RISCV::BI__builtin_riscv_sha256sig1: diff --git a/clang/test/CIR/CodeGenBuiltins/RISCV/riscv-zbkb.c b/clang/test/CIR/CodeGenBuiltins/RISCV/riscv-zbkb.c new file mode 100644 index 0000000000000..6285a75b4bb4a --- /dev/null +++ b/clang/test/CIR/CodeGenBuiltins/RISCV/riscv-zbkb.c @@ -0,0 +1,50 @@ +// RUN: %clang_cc1 -triple riscv32 -target-feature +zbkb -fclangir -emit-cir %s -o - | FileCheck %s --check-prefixes=CIR,CIR32 +// RUN: %clang_cc1 -triple riscv64 -target-feature +zbkb -fclangir -emit-cir %s -o - | FileCheck %s --check-prefixes=CIR,CIR64 +// RUN: %clang_cc1 -triple riscv32 -target-feature +zbkb -fclangir -emit-llvm %s -o - | FileCheck %s --check-prefixes=LLVM,LLVM32 +// RUN: %clang_cc1 -triple riscv64 -target-feature +zbkb -fclangir -emit-llvm %s -o - | FileCheck %s --check-prefixes=LLVM,LLVM64 +// RUN: %clang_cc1 -triple riscv32 -target-feature +zbkb -emit-llvm %s -o - | FileCheck %s --check-prefixes=LLVM,LLVM32 +// RUN: %clang_cc1 -triple riscv64 -target-feature +zbkb -emit-llvm %s -o - | FileCheck %s --check-prefixes=LLVM,LLVM64 + +// CIR-LABEL: cir.func{{.*}} @test_builtin_brev8_32( +// CIR: {{%.*}} = cir.call_llvm_intrinsic "riscv.brev8" {{%.*}} : (!u32i) -> !u32i +// CIR: cir.return +// LLVM-LABEL: @test_builtin_brev8_32( +// LLVM: call i32 @llvm.riscv.brev8.i32(i32 {{%.*}}) +// LLVM: ret i32 +unsigned int test_builtin_brev8_32(unsigned int a) { + return __builtin_riscv_brev8_32(a); +} + +#if __riscv_xlen == 32 +// CIR32-LABEL: cir.func{{.*}} @test_builtin_zip_32( +// CIR32: {{%.*}} = cir.call_llvm_intrinsic "riscv.zip" {{%.*}} : (!u32i) -> !u32i +// CIR32: cir.return +// LLVM32-LABEL: @test_builtin_zip_32( +// LLVM32: call i32 @llvm.riscv.zip.i32(i32 {{%.*}}) +// LLVM32: ret i32 +unsigned int test_builtin_zip_32(unsigned int a) { + return __builtin_riscv_zip_32(a); +} + +// CIR32-LABEL: cir.func{{.*}} @test_builtin_unzip_32( +// CIR32: {{%.*}} = cir.call_llvm_intrinsic "riscv.unzip" {{%.*}} : (!u32i) -> !u32i +// CIR32: cir.return +// LLVM32-LABEL: @test_builtin_unzip_32( +// LLVM32: call i32 @llvm.riscv.unzip.i32(i32 {{%.*}}) +// LLVM32: ret i32 +unsigned int test_builtin_unzip_32(unsigned int a) { + return __builtin_riscv_unzip_32(a); +} +#endif + +#if __riscv_xlen == 64 +// CIR64-LABEL: cir.func{{.*}} @test_builtin_brev8_64( +// CIR64: {{%.*}} = cir.call_llvm_intrinsic "riscv.brev8" {{%.*}} : (!u64i) -> !u64i +// CIR64: cir.return +// LLVM64-LABEL: @test_builtin_brev8_64( +// LLVM64: call i64 @llvm.riscv.brev8.i64(i64 {{%.*}}) +// LLVM64: ret i64 +unsigned long long test_builtin_brev8_64(unsigned long long a) { + return __builtin_riscv_brev8_64(a); +} +#endif _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
