Skip to content

Commit 9a5c3f1

Browse files
committed
try to fix the CUDA builds
1 parent 0e1164c commit 9a5c3f1

1 file changed

Lines changed: 36 additions & 18 deletions

File tree

include/stdexec/__detail/__atomic.hpp

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ namespace STDEXEC::__std {
4444
using cuda::std::atomic_thread_fence;
4545
using cuda::std::atomic_signal_fence;
4646

47-
#else
47+
#else // ^^^ STDEXEC_HAS_CUDA_STD_ATOMIC() / vvv !STDEXEC_HAS_CUDA_STD_ATOMIC()
4848

4949
using std::atomic;
5050
using std::atomic_flag;
@@ -99,18 +99,20 @@ namespace STDEXEC::__std {
9999
__atomic_store_n(__ptr_, __desired, __map_memory_order(__order));
100100
}
101101
};
102-
# endif
102+
# endif // ^^^ __cpp_lib_atomic_ref < 2018'06L
103+
104+
#endif // ^^^ !STDEXEC_HAS_CUDA_STD_ATOMIC()
103105

104106
constexpr memory_order __memory_order_load(memory_order __order) noexcept {
105107
return __order == memory_order_acq_rel ? memory_order_acquire
106108
: __order == memory_order_release ? memory_order_relaxed
107109
: __order;
108110
}
109111

110-
# if __cpp_lib_atomic_shared_ptr >= 2017'11L
112+
#if __cpp_lib_atomic_shared_ptr >= 2017'11L
111113
template <class _Ty>
112114
using __atomic_shared_ptr = std::atomic<std::shared_ptr<_Ty>>;
113-
# else
115+
#else
114116
template <typename _Ty>
115117
struct __atomic_shared_ptr {
116118
using value_type = std::shared_ptr<_Ty>;
@@ -144,54 +146,71 @@ namespace STDEXEC::__std {
144146

145147
[[nodiscard]]
146148
bool is_lock_free() const noexcept {
147-
return atomic_is_lock_free(&__ptr_);
149+
return std::atomic_is_lock_free(&__ptr_);
148150
}
149151

150152
std::shared_ptr<_Ty> load(memory_order __order = memory_order_seq_cst) const noexcept {
151-
return atomic_load_explicit(&__ptr_, __order);
153+
return std::atomic_load_explicit(&__ptr_, static_cast<std::memory_order>(__order));
152154
}
153155

154156
void store(std::shared_ptr<_Ty> __ptr, memory_order __order = memory_order_seq_cst) noexcept {
155-
atomic_store_explicit(&__ptr_, std::move(__ptr), __order);
157+
std::atomic_store_explicit(&__ptr_, std::move(__ptr), static_cast<std::memory_order>(__order));
156158
}
157159

158160
std::shared_ptr<_Ty>
159161
exchange(std::shared_ptr<_Ty> __ptr, memory_order __order = memory_order_seq_cst) noexcept {
160-
return atomic_exchange_explicit(&__ptr_, std::move(__ptr), __order);
162+
return std::atomic_exchange_explicit(
163+
&__ptr_, std::move(__ptr), static_cast<std::memory_order>(__order));
161164
}
162165

163166
bool compare_exchange_weak(
164167
std::shared_ptr<_Ty>& __expected,
165168
std::shared_ptr<_Ty> __desired,
166169
memory_order __success,
167170
memory_order __failure) noexcept {
168-
return atomic_compare_exchange_weak_explicit(
169-
&__ptr_, &__expected, std::move(__desired), __success, __failure);
171+
return std::atomic_compare_exchange_weak_explicit(
172+
&__ptr_,
173+
&__expected,
174+
std::move(__desired),
175+
static_cast<std::memory_order>(__success),
176+
static_cast<std::memory_order>(__failure));
170177
}
171178

172179
bool compare_exchange_weak(
173180
std::shared_ptr<_Ty>& __expected,
174181
std::shared_ptr<_Ty> __desired,
175182
memory_order __order = memory_order_seq_cst) noexcept {
176-
return atomic_compare_exchange_weak_explicit(
177-
&__ptr_, &__expected, std::move(__desired), __order, __memory_order_load(__order));
183+
return std::atomic_compare_exchange_weak_explicit(
184+
&__ptr_,
185+
&__expected,
186+
std::move(__desired),
187+
static_cast<std::memory_order>(__order),
188+
static_cast<std::memory_order>(__std::__memory_order_load(__order)));
178189
}
179190

180191
bool compare_exchange_strong(
181192
std::shared_ptr<_Ty>& __expected,
182193
std::shared_ptr<_Ty> __desired,
183194
memory_order __upon_success,
184195
memory_order __upon_failure) noexcept {
185-
return atomic_compare_exchange_strong_explicit(
186-
&__ptr_, &__expected, std::move(__desired), __upon_success, __upon_failure);
196+
return std::atomic_compare_exchange_strong_explicit(
197+
&__ptr_,
198+
&__expected,
199+
std::move(__desired),
200+
static_cast<std::memory_order>(__upon_success),
201+
static_cast<std::memory_order>(__upon_failure));
187202
}
188203

189204
bool compare_exchange_strong(
190205
std::shared_ptr<_Ty>& __expected,
191206
std::shared_ptr<_Ty> __desired,
192207
memory_order __order = memory_order_seq_cst) noexcept {
193-
return atomic_compare_exchange_strong_explicit(
194-
&__ptr_, &__expected, std::move(__desired), __order, __memory_order_load(__order));
208+
return std::atomic_compare_exchange_strong_explicit(
209+
&__ptr_,
210+
&__expected,
211+
std::move(__desired),
212+
static_cast<std::memory_order>(__order),
213+
static_cast<std::memory_order>(__std::__memory_order_load(__order)));
195214
}
196215

197216
private:
@@ -201,7 +220,6 @@ namespace STDEXEC::__std {
201220
template <typename _Ty>
202221
__atomic_shared_ptr(std::shared_ptr<_Ty>) -> __atomic_shared_ptr<_Ty>;
203222

204-
# endif
223+
#endif // ^^^ __cpp_lib_atomic_shared_ptr < 2017'11L
205224

206-
#endif
207225
} // namespace STDEXEC::__std

0 commit comments

Comments
 (0)