8000 MAINT: add support for gcc builtin atomics · numpy/numpy@5126d73 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5126d73

Browse files
committed
MAINT: add support for gcc builtin atomics
1 parent 847c80e commit 5126d73

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

numpy/_core/src/common/npy_atomic.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,14 @@
1717
#elif _MSC_VER
1818
#include <intrin.h>
1919
#define MSC_ATOMICS
20+
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >=8))
21+
#define GCC_ATOMICS
22+
#elif defined(__clang__)
23+
#if __has_builtin(__atomic_load)
24+
#define GCC_ATOMICS
25+
#endif
2026
#else
21-
#error "no support for missing C11 atomics except with MSVC"
27+
#error "no supported atomic implementation for this platform/compiler"
2228
#endif
2329

2430

@@ -33,10 +39,13 @@ static inline npy_uint8 npy_atomic_load_uint8(const npy_uint8 *obj) {
3339
#else
3440
#error "Unsupported MSVC build configuration, neither x86 or ARM"
3541
#endif
42+
#elif defined(GCC_ATOMICS)
43+
return __atomic_load_n(obj, __ATOMIC_SEQ_CST);
3644
#endif
3745
}
3846

3947
#undef MSC_ATOMICS
4048
#undef STDC_ATOMICS
49+
#undef GCC_ATOMICS
4150

4251
#endif // NUMPY_CORE_SRC_COMMON_NPY_NPY_ATOMIC_H_

0 commit comments

Comments
 (0)
0