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

Reply via email to