https://github.com/paulwalker-arm created https://github.com/llvm/llvm-project/pull/217256
None >From 51a00e14fd5d1aab66d1445e6057bef20835048b Mon Sep 17 00:00:00 2001 From: Paul Walker <[email protected]> Date: Wed, 19 Aug 2026 09:46:20 +0000 Subject: [PATCH] [Clang][SVE] Zero svcount_t directly rather than casting a svbool_t zero. --- clang/lib/CodeGen/TargetBuiltins/ARM.cpp | 8 ++------ .../AArch64/sve2p1-intrinsics/acle_sve2p1_pfalse.c | 6 ++---- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp index 22e0dfc55157f..662ec6d549986 100644 --- a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp +++ b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp @@ -4226,12 +4226,8 @@ Value *CodeGenFunction::EmitAArch64SVEBuiltinExpr(unsigned BuiltinID, case SVE::BI__builtin_sve_svpfalse_b: return ConstantInt::getFalse(Ty); - case SVE::BI__builtin_sve_svpfalse_c: { - auto SVBoolTy = ScalableVectorType::get(Builder.getInt1Ty(), 16); - Function *CastToSVCountF = - CGM.getIntrinsic(Intrinsic::aarch64_sve_convert_from_svbool, Ty); - return Builder.CreateCall(CastToSVCountF, ConstantInt::getFalse(SVBoolTy)); - } + case SVE::BI__builtin_sve_svpfalse_c: + return Constant::getNullValue(Ty); case SVE::BI__builtin_sve_svlen_bf16: case SVE::BI__builtin_sve_svlen_f16: diff --git a/clang/test/CodeGen/AArch64/sve2p1-intrinsics/acle_sve2p1_pfalse.c b/clang/test/CodeGen/AArch64/sve2p1-intrinsics/acle_sve2p1_pfalse.c index fdf9c498341fa..6cbb561ebb00a 100644 --- a/clang/test/CodeGen/AArch64/sve2p1-intrinsics/acle_sve2p1_pfalse.c +++ b/clang/test/CodeGen/AArch64/sve2p1-intrinsics/acle_sve2p1_pfalse.c @@ -17,13 +17,11 @@ // CHECK-LABEL: @test_svpfalse_c( // CHECK-NEXT: entry: -// CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.convert.from.svbool.taarch64.svcountt(<vscale x 16 x i1> zeroinitializer) -// CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]] +// CHECK-NEXT: ret target("aarch64.svcount") zeroinitializer // // CPP-CHECK-LABEL: @_Z15test_svpfalse_cv( // CPP-CHECK-NEXT: entry: -// CPP-CHECK-NEXT: [[TMP0:%.*]] = tail call target("aarch64.svcount") @llvm.aarch64.sve.convert.from.svbool.taarch64.svcountt(<vscale x 16 x i1> zeroinitializer) -// CPP-CHECK-NEXT: ret target("aarch64.svcount") [[TMP0]] +// CPP-CHECK-NEXT: ret target("aarch64.svcount") zeroinitializer // svcount_t test_svpfalse_c(void) ATTR { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
