[llvm] [AMDGPU] Expand constant named barrier matching in SDag (PR #191506)
Krzysztof Drewniak via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 17 10:54:37 PDT 2026
================
@@ -11818,6 +11818,29 @@ static void initializeM0ToZeroForClusterLoad(SDValue Op, SelectionDAG &DAG,
DAG.UpdateNodeOperands(N, Ops);
}
+// Try to resolve a named barrier object to a constant barrier ID.
+// Named barrier IDs are encoded at bits [5:0] of a BARRIER address space
+// address.
+static std::optional<uint32_t>
+getConstantNamedBarrierNumber(SDValue BarOp, SelectionDAG &DAG) {
+ std::optional<uint64_t> BarVal;
+ if (auto *C = dyn_cast<ConstantSDNode>(BarOp)) {
+ BarVal = C->getZExtValue();
+ } else if (auto *GA = dyn_cast<GlobalAddressSDNode>(BarOp)) {
+ const auto *GV = cast<GlobalVariable>(GA->getGlobal());
+ if (AMDGPU::isNamedBarrier(*GV) &&
+ AMDGPUMachineFunctionInfo::get32BitAbsoluteAddress(*GV,
+ AMDGPUAS::BARRIER)) {
+ auto *MFI = DAG.getMachineFunction().getInfo<SIMachineFunctionInfo>();
+ BarVal = MFI->allocateBarrierGlobal(DAG.getDataLayout(), *GV) +
+ GA->getOffset();
+ }
+ }
+ if (BarVal)
----------------
krzysz00 wrote:
What about poison? Should we just pick something arbitrarly here?
https://github.com/llvm/llvm-project/pull/191506
More information about the llvm-commits
mailing list