diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-02-17 00:21:48 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-02-17 22:29:50 +0100 |
commit | a141c401f78467bc15f62882fca5d55a007cacbb (patch) | |
tree | 908ac71a8640f78f45d22c6808c5fa6e373000fa /asl/atomic.hpp | |
parent | cb77cbe9ce4cddad6a460aa190ff70f0c13e4703 (diff) |
Reorganize everything
Diffstat (limited to 'asl/atomic.hpp')
-rw-r--r-- | asl/atomic.hpp | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/asl/atomic.hpp b/asl/atomic.hpp deleted file mode 100644 index 95c3715..0000000 --- a/asl/atomic.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include "asl/meta.hpp" - -namespace asl -{ - -enum class memory_order : int // NOLINT(*-enum-size) -{ - relaxed = __ATOMIC_RELAXED, - acquire = __ATOMIC_ACQUIRE, - release = __ATOMIC_RELEASE, - acq_rel = __ATOMIC_ACQ_REL, - seq_cst = __ATOMIC_SEQ_CST, -}; - -template<typename T> struct atomic { T m_value{}; }; - -inline void atomic_fence(memory_order order) -{ - __atomic_thread_fence(static_cast<int>(order)); -} - -template<is_integer T> -inline void atomic_store(atomic<T>* a, T value, memory_order order = memory_order::relaxed) -{ - __atomic_store(&a->m_value, &value, static_cast<int>(order)); -} - -template<is_integer T> -inline T atomic_load(atomic<T>* a, memory_order order = memory_order::relaxed) -{ - T value; - __atomic_load(&a->m_value, &value, static_cast<int>(order)); - return value; -} - -template<typename T> -inline T atomic_fetch_increment(atomic<T>* a, memory_order order = memory_order::relaxed) -{ - return __atomic_fetch_add(&a->m_value, 1, static_cast<int>(order)); -} - -template<typename T> -inline T atomic_fetch_decrement(atomic<T>* a, memory_order order = memory_order::relaxed) -{ - return __atomic_fetch_sub(&a->m_value, 1, static_cast<int>(order)); -} - -} // namespace asl - |