diff options
author | Aaditya <115080342+easyonaadit@users.noreply.github.com> | 2025-09-10 20:13:30 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-10 20:13:30 +0530 |
commit | bdebbd90150fbba210c097188e49b51d0eb960a4 (patch) | |
tree | d3dc36d6c16e4103d775199351107b5cf5b75e38 /llvm/lib/Analysis/ConstantFolding.cpp | |
parent | 62f2641d603db9aef99dd5c434a1dfe7d3f56346 (diff) | |
download | llvm-bdebbd90150fbba210c097188e49b51d0eb960a4.zip llvm-bdebbd90150fbba210c097188e49b51d0eb960a4.tar.gz llvm-bdebbd90150fbba210c097188e49b51d0eb960a4.tar.bz2 |
[AMDGPU] Propagate Constants for Wave Reduction Intrinsics (#150395)
Diffstat (limited to 'llvm/lib/Analysis/ConstantFolding.cpp')
-rwxr-xr-x[-rw-r--r--] | llvm/lib/Analysis/ConstantFolding.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp index 40e176c..a136e87 100644..100755 --- a/llvm/lib/Analysis/ConstantFolding.cpp +++ b/llvm/lib/Analysis/ConstantFolding.cpp @@ -1652,6 +1652,13 @@ bool llvm::canConstantFoldCallTo(const CallBase *Call, const Function *F) { case Intrinsic::amdgcn_perm: case Intrinsic::amdgcn_wave_reduce_umin: case Intrinsic::amdgcn_wave_reduce_umax: + case Intrinsic::amdgcn_wave_reduce_max: + case Intrinsic::amdgcn_wave_reduce_min: + case Intrinsic::amdgcn_wave_reduce_add: + case Intrinsic::amdgcn_wave_reduce_sub: + case Intrinsic::amdgcn_wave_reduce_and: + case Intrinsic::amdgcn_wave_reduce_or: + case Intrinsic::amdgcn_wave_reduce_xor: case Intrinsic::amdgcn_s_wqm: case Intrinsic::amdgcn_s_quadmask: case Intrinsic::amdgcn_s_bitreplicate: @@ -3672,6 +3679,13 @@ static Constant *ConstantFoldIntrinsicCall2(Intrinsic::ID IntrinsicID, Type *Ty, return ConstantInt::get(Ty, C0->abs()); case Intrinsic::amdgcn_wave_reduce_umin: case Intrinsic::amdgcn_wave_reduce_umax: + case Intrinsic::amdgcn_wave_reduce_max: + case Intrinsic::amdgcn_wave_reduce_min: + case Intrinsic::amdgcn_wave_reduce_add: + case Intrinsic::amdgcn_wave_reduce_sub: + case Intrinsic::amdgcn_wave_reduce_and: + case Intrinsic::amdgcn_wave_reduce_or: + case Intrinsic::amdgcn_wave_reduce_xor: return dyn_cast<Constant>(Operands[0]); } |