[llvm] [AMDGPU] Mark CDBG branches as having side effects (PR #226123)

Alexander Hück via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 24 04:23:04 PDT 2026


https://github.com/ahueck created https://github.com/llvm/llvm-project/pull/226123

The change marks all four CDBG branch variants as having unmodeled side effects, consistent with reading externally controlled debug state.

>From 1811c83ee4b865eb80c64c401800102f507a3414 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alexander=20H=C3=BCck?= <alexander.huck at amd.com>
Date: Thu, 24 Sep 2026 07:06:29 -0400
Subject: [PATCH] [AMDGPU] Mark CDBG branches as having side effects

---
 llvm/lib/Target/AMDGPU/SOPInstructions.td     |  2 ++
 .../Target/AMDGPU/AMDGPUUnitTests.cpp         | 29 +++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/llvm/lib/Target/AMDGPU/SOPInstructions.td b/llvm/lib/Target/AMDGPU/SOPInstructions.td
index bdcef208f52e9..b336af3bcd01f 100644
--- a/llvm/lib/Target/AMDGPU/SOPInstructions.td
+++ b/llvm/lib/Target/AMDGPU/SOPInstructions.td
@@ -1623,6 +1623,7 @@ defm S_CBRANCH_EXECNZ : SOPP_With_Relaxation <
 >;
 } // End Uses = [EXEC]
 
+let hasSideEffects = 1 in {
 defm S_CBRANCH_CDBGSYS : SOPP_With_Relaxation <
   "s_cbranch_cdbgsys" , (ins SOPPBrTarget:$simm16),
   "$simm16"
@@ -1642,6 +1643,7 @@ defm S_CBRANCH_CDBGUSER : SOPP_With_Relaxation <
   "s_cbranch_cdbguser" , (ins SOPPBrTarget:$simm16),
   "$simm16"
 >;
+} // End hasSideEffects = 1
 
 } // End isBranch = 1
 } // End isTerminator = 1
diff --git a/llvm/unittests/Target/AMDGPU/AMDGPUUnitTests.cpp b/llvm/unittests/Target/AMDGPU/AMDGPUUnitTests.cpp
index 51fda88e66eca..b2c7d4f229770 100644
--- a/llvm/unittests/Target/AMDGPU/AMDGPUUnitTests.cpp
+++ b/llvm/unittests/Target/AMDGPU/AMDGPUUnitTests.cpp
@@ -10,6 +10,7 @@
 #include "AMDGPUGenSubtargetInfo.inc"
 #include "AMDGPUTargetMachine.h"
 #include "GCNSubtarget.h"
+#include "llvm/MC/MCInstrInfo.h"
 #include "llvm/MC/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/TargetParser/AMDGPUTargetParser.h"
@@ -375,3 +376,31 @@ TEST_F(AMDGPUTestBase, TestGetNamedOperandIdx) {
     }
   }
 }
+
+TEST_F(AMDGPUTestBase, TestBranchUnmodeledSideEffects) {
+  auto TM = createAMDGPUTargetMachine(Triple("amdgpu9.00-amd-"), "", "");
+  ASSERT_TRUE(TM);
+  const MCInstrInfo *MCII = TM->getMCInstrInfo();
+  ASSERT_NE(MCII, nullptr);
+
+  const struct {
+    unsigned Opcode;
+    bool HasSideEffects;
+  } Cases[] = {
+      {AMDGPU::S_CBRANCH_CDBGSYS, true},
+      {AMDGPU::S_CBRANCH_CDBGUSER, true},
+      {AMDGPU::S_CBRANCH_CDBGSYS_OR_USER, true},
+      {AMDGPU::S_CBRANCH_CDBGSYS_AND_USER, true},
+      {AMDGPU::S_CBRANCH_CDBGSYS_pad_s_nop, true},
+      {AMDGPU::S_CBRANCH_CDBGUSER_pad_s_nop, true},
+      {AMDGPU::S_CBRANCH_CDBGSYS_OR_USER_pad_s_nop, true},
+      {AMDGPU::S_CBRANCH_CDBGSYS_AND_USER_pad_s_nop, true},
+      {AMDGPU::S_CBRANCH_SCC0, false},
+      {AMDGPU::S_CBRANCH_SCC0_pad_s_nop, false},
+  };
+
+  for (const auto &Case : Cases)
+    EXPECT_EQ(Case.HasSideEffects,
+              MCII->get(Case.Opcode).hasUnmodeledSideEffects())
+        << MCII->getName(Case.Opcode);
+}



More information about the llvm-commits mailing list