https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/131061
>From be3d513c1597c81f01c81f6348f32741c4fc33d7 Mon Sep 17 00:00:00 2001 From: Matt Arsenault <matthew.arsena...@amd.com> Date: Thu, 13 Mar 2025 10:42:28 +0700 Subject: [PATCH] AMDGPU: Make ballot intrinsic propagate poison --- .../Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp | 6 +++++- .../InstCombine/AMDGPU/amdgcn-intrinsics.ll | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp b/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp index 02977a61efb55..52773c25f6dd3 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp @@ -1050,7 +1050,11 @@ GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const { break; } case Intrinsic::amdgcn_ballot: { - if (auto *Src = dyn_cast<ConstantInt>(II.getArgOperand(0))) { + Value *Arg = II.getArgOperand(0); + if (isa<PoisonValue>(Arg)) + return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType())); + + if (auto *Src = dyn_cast<ConstantInt>(Arg)) { if (Src->isZero()) { // amdgcn.ballot(i1 0) is zero. return IC.replaceInstUsesWith(II, Constant::getNullValue(II.getType())); diff --git a/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll b/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll index af5c66165e67e..124ea57be35e9 100644 --- a/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll +++ b/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll @@ -2960,6 +2960,22 @@ define i32 @ballot_one_32() { ret i32 %b } +define i64 @ballot_poison_64() { +; CHECK-LABEL: @ballot_poison_64( +; CHECK-NEXT: ret i64 poison +; + %b = call i64 @llvm.amdgcn.ballot.i64(i1 poison) + ret i64 %b +} + +define i32 @ballot_poison_32() { +; CHECK-LABEL: @ballot_poison_32( +; CHECK-NEXT: ret i32 poison +; + %b = call i32 @llvm.amdgcn.ballot.i32(i1 poison) + ret i32 %b +} + ; -------------------------------------------------------------------- ; llvm.amdgcn.wqm.vote ; -------------------------------------------------------------------- _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits