[llvm-branch-commits] [clang] [llvm] [mlir] [RFC][AMDGPU] Add BARRIER address space (PR #195613)
Pierre van Houtryve via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed May 6 07:18:59 PDT 2026
================
@@ -1529,24 +1530,37 @@ SDValue AMDGPUTargetLowering::LowerGlobalAddress(AMDGPUMachineFunctionInfo *MFI,
const GlobalValue *GV = G->getGlobal();
if (!MFI->isModuleEntryFunction()) {
- auto IsNamedBarrier = AMDGPU::isNamedBarrier(*cast<GlobalVariable>(GV));
+ auto *IsNamedBarrier = AMDGPU::isNamedBarrier(*cast<GlobalVariable>(GV));
+ if (IsNamedBarrier) {
+ std::optional<uint32_t> Address =
+ AMDGPUMachineFunctionInfo::get32BitAbsoluteAddress(
+ *GV, AMDGPUAS::EXECSYNC);
+ if (!Address)
+ llvm_unreachable("named barrier should have an assigned address");
+ unsigned BarCnt = cast<GlobalVariable>(GV)->getGlobalSize(DL) / 16;
+ MFI->recordNumNamedBarriers(Address.value(), BarCnt);
+ return DAG.getConstant(*Address, SDLoc(Op), Op.getValueType());
+ }
+
if (std::optional<uint32_t> Address =
- AMDGPUMachineFunctionInfo::getLDSAbsoluteAddress(*GV)) {
- if (IsNamedBarrier) {
- unsigned BarCnt = cast<GlobalVariable>(GV)->getGlobalSize(DL) / 16;
- MFI->recordNumNamedBarriers(Address.value(), BarCnt);
- }
+ AMDGPUMachineFunctionInfo::get32BitAbsoluteAddress(
+ *GV, AMDGPUAS::LOCAL_ADDRESS)) {
return DAG.getConstant(*Address, SDLoc(Op), Op.getValueType());
- } else if (IsNamedBarrier) {
- llvm_unreachable("named barrier should have an assigned address");
}
}
+ if (G->getAddressSpace() == AMDGPUAS::EXECSYNC) {
+ const GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV);
+ assert(GVar && AMDGPU::isNamedBarrier(*GVar) &&
+ "Unsupport use for EXECSYNC address space!");
----------------
Pierre-vh wrote:
Done
https://github.com/llvm/llvm-project/pull/195613
More information about the llvm-branch-commits
mailing list