[llvm] [AMDGPU] Extend max3/min3 tree-reduction combine to cover ternary chains (PR #194845)
Dmitry Sidorov via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 29 17:49:47 PDT 2026
================
@@ -16012,21 +16012,26 @@ SDValue SITargetLowering::performMinMaxCombine(SDNode *N,
if (supportsMin3Max3(*Subtarget, Opc, VT)) {
auto IsTreeWithCombinableChildren = [Opc](SDValue Op) {
- return Op.getOperand(0).getOpcode() == Opc &&
- Op.getOperand(1).getOpcode() == Opc &&
- (Op.getOperand(0).hasOneUse() || Op.getOperand(1).hasOneUse());
+ return (Op.getOperand(0).getOpcode() == Opc &&
+ Op.getOperand(0).hasOneUse()) ||
+ (Op.getOperand(1).getOpcode() == Opc &&
+ Op.getOperand(1).hasOneUse());
};
+ bool TreeCombineApplies = Op0.getOpcode() == Opc && Op0.hasOneUse() &&
+ Op1.getOpcode() == Opc && Op1.hasOneUse();
+ bool TreeCombineDeferred =
+ TreeCombineApplies && (IsTreeWithCombinableChildren(Op0) ||
+ IsTreeWithCombinableChildren(Op1));
----------------
MrSidims wrote:
nit:
```suggestion
bool HasCombinableTreeChild =
IsTreeWithCombinableChildren(Op0) || IsTreeWithCombinableChildren(Op1);
```
not a strong request, leave it as you like, I just had troubles parsing what happens next under ifs.
https://github.com/llvm/llvm-project/pull/194845
More information about the llvm-commits
mailing list