================
@@ -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

Reply via email to