[llvm] [AMDGPU] SelectionDAG divergence tracking should take into account Target divergency. (PR #144947)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 25 07:21:04 PDT 2025
================
@@ -13594,24 +13600,25 @@ void SelectionDAG::createOperands(SDNode *Node, ArrayRef<SDValue> Vals) {
SDUse *Ops = OperandRecycler.allocate(
ArrayRecycler<SDUse>::Capacity::get(Vals.size()), OperandAllocator);
- bool IsDivergent = false;
+ Node->SDNodeBits.IsDivergent = false;
for (unsigned I = 0; I != Vals.size(); ++I) {
Ops[I].setUser(Node);
Ops[I].setInitial(Vals[I]);
EVT VT = Ops[I].getValueType();
- // Skip Chain. It does not carry divergence.
- if (VT != MVT::Other &&
- (VT != MVT::Glue || gluePropagatesDivergence(Ops[I].getNode())) &&
- Ops[I].getNode()->isDivergent()) {
- IsDivergent = true;
- }
+ if (DivergentTarget)
+ // Skip Chain. It does not carry divergence.
+ if (VT != MVT::Other &&
+ (VT != MVT::Glue || gluePropagatesDivergence(Ops[I].getNode())) &&
+ Ops[I].getNode()->isDivergent()) {
+ Node->SDNodeBits.IsDivergent = true;
----------------
alex-t wrote:
Oops, that was sloppy on my part. Thanks for catching it.
https://github.com/llvm/llvm-project/pull/144947
More information about the llvm-commits
mailing list