[llvm-branch-commits] [llvm] release/20.x: [OpenMP] Add pre sm_70 load hack back in (#138589) (PR #138626)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon May 5 20:18:35 PDT 2025


https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/138626

Backport dfcb8cb

Requested by: @ye-luo

>From dd2f2eeb12fe3349944a12caf30ec874752dea34 Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Mon, 5 May 2025 16:33:41 -0500
Subject: [PATCH] [OpenMP] Add pre sm_70 load hack back in (#138589)

Summary:
Different ordering modes aren't supported for an atomic load, so we just
do an add of zero as the same thing. It's less efficient, but it works.

Fixes https://github.com/llvm/llvm-project/issues/138560

(cherry picked from commit dfcb8cb2a92c9f72ddde5ea08dadf2f640197d32)
---
 offload/DeviceRTL/include/Synchronization.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/offload/DeviceRTL/include/Synchronization.h b/offload/DeviceRTL/include/Synchronization.h
index 5a789441b9d35..c510fbf0774c2 100644
--- a/offload/DeviceRTL/include/Synchronization.h
+++ b/offload/DeviceRTL/include/Synchronization.h
@@ -61,7 +61,11 @@ V add(Ty *Address, V Val, atomic::OrderingTy Ordering,
 template <typename Ty, typename V = utils::remove_addrspace_t<Ty>>
 V load(Ty *Address, atomic::OrderingTy Ordering,
        MemScopeTy MemScope = MemScopeTy::device) {
+#ifdef __NVPTX__
+  return __scoped_atomic_fetch_add(Address, V(0), Ordering, MemScope);
+#else
   return __scoped_atomic_load_n(Address, Ordering, MemScope);
+#endif
 }
 
 template <typename Ty, typename V = utils::remove_addrspace_t<Ty>>



More information about the llvm-branch-commits mailing list