Index: llvm/lib/Target/AMDGPU/SIInstructions.td =================================================================== --- llvm/lib/Target/AMDGPU/SIInstructions.td +++ llvm/lib/Target/AMDGPU/SIInstructions.td @@ -418,6 +418,7 @@ let Size = 12; let hasSideEffects = 1; let IsNeverUniform = 1; + let isConvergent = 1; } def SI_ELSE : CFPseudoInstSI < @@ -426,6 +427,7 @@ let Size = 12; let hasSideEffects = 1; let IsNeverUniform = 1; + let isConvergent = 1; } def SI_WATERFALL_LOOP : CFPseudoInstSI < @@ -434,6 +436,7 @@ let Size = 8; let isBranch = 1; let Defs = []; + let isConvergent = 1; } def SI_LOOP : CFPseudoInstSI < @@ -443,6 +446,7 @@ let isBranch = 1; let hasSideEffects = 1; let IsNeverUniform = 1; + let isConvergent = 1; } } // End isTerminator = 1 @@ -453,6 +457,7 @@ let isAsCheapAsAMove = 1; let isReMaterializable = 1; let hasSideEffects = 1; + let isConvergent = 1; let isNotDuplicable = 1; // Not a hard requirement, see long comments above for details. let mayLoad = 1; // FIXME: Should not need memory flags let mayStore = 1; @@ -464,6 +469,7 @@ let isNotDuplicable = 1; // Not a hard requirement, see long comments above for details. let isAsCheapAsAMove = 1; let isReMaterializable = 1; + let isConvergent = 1; } // Branch to the early termination block of the shader if SCC is 0.