================
@@ -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
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits