[llvm] AMDGPU/UniformityAnalysis: For G_AMDGPU_WHOLE_WAVE_FUNC_SETUP, always divergent (PR #203000)
Petar Avramovic via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 10 08:28:51 PDT 2026
https://github.com/petar-avramovic updated https://github.com/llvm/llvm-project/pull/203000
>From fef12291c26e4fb408f8c94d0088f8eaca9ce4ca Mon Sep 17 00:00:00 2001
From: Petar Avramovic <Petar.Avramovic at amd.com>
Date: Wed, 10 Jun 2026 16:47:27 +0200
Subject: [PATCH] AMDGPU/UniformityAnalysis: For
G_AMDGPU_WHOLE_WAVE_FUNC_SETUP, always divergent
---
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | 3 +++
.../AMDGPU/MIR/never-uniform-gmir.mir | 13 +++++++++++++
2 files changed, 16 insertions(+)
create mode 100644 llvm/test/Analysis/UniformityAnalysis/AMDGPU/MIR/never-uniform-gmir.mir
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index b4fa13c8ebae3..8bc8cdbe3395e 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -10992,6 +10992,9 @@ SIInstrInfo::getGenericValueUniformity(const MachineInstr &MI) const {
if (Opcode == TargetOpcode::G_DYN_STACKALLOC)
return ValueUniformity::AlwaysUniform;
+ if (Opcode == AMDGPU::G_AMDGPU_WHOLE_WAVE_FUNC_SETUP)
+ return ValueUniformity::NeverUniform;
+
return ValueUniformity::Default;
}
diff --git a/llvm/test/Analysis/UniformityAnalysis/AMDGPU/MIR/never-uniform-gmir.mir b/llvm/test/Analysis/UniformityAnalysis/AMDGPU/MIR/never-uniform-gmir.mir
new file mode 100644
index 0000000000000..e59410179b526
--- /dev/null
+++ b/llvm/test/Analysis/UniformityAnalysis/AMDGPU/MIR/never-uniform-gmir.mir
@@ -0,0 +1,13 @@
+# RUN: llc -mtriple=amdgcn-- -run-pass=print-machine-uniformity -o - %s 2>&1 | FileCheck %s
+# RUN: llc -mtriple=amdgcn-- -passes='print<machine-uniformity>' -filetype=null %s 2>&1 | FileCheck %s
+
+# whole wave func setup (original exec mask) is a divergence source
+---
+name: whole_wave_func_setup
+body: |
+ bb.0:
+ ; CHECK-LABEL: MachineUniformityInfo for function: @whole_wave_func_setup
+ ; CHECK: DIVERGENT: %0: %0:_(s1) = G_AMDGPU_WHOLE_WAVE_FUNC_SETUP
+ %0:_(s1) = G_AMDGPU_WHOLE_WAVE_FUNC_SETUP
+ G_AMDGPU_WHOLE_WAVE_FUNC_RETURN %0(s1)
+...
More information about the llvm-commits
mailing list