 |
Blender
V3.3
|
Go to the documentation of this file.
51 #ifndef __ATOMIC_OPS_UTILS_H__
52 #define __ATOMIC_OPS_UTILS_H__
63 # define ATOMIC_INLINE static __forceinline
65 # define ATOMIC_INLINE static inline __attribute__((always_inline))
69 # define _ATOMIC_LIKELY(x) __builtin_expect(!!(x), 1)
70 # define _ATOMIC_UNLIKELY(x) __builtin_expect(!!(x), 0)
71 # define _ATOMIC_MAYBE_UNUSED __attribute__((unused))
73 # define _ATOMIC_LIKELY(x) (x)
74 # define _ATOMIC_UNLIKELY(x) (x)
75 # define _ATOMIC_MAYBE_UNUSED
78 #if defined(__SIZEOF_POINTER__)
79 # define LG_SIZEOF_PTR __SIZEOF_POINTER__
80 #elif defined(UINTPTR_MAX)
81 # if (UINTPTR_MAX == 0xFFFFFFFF)
82 # define LG_SIZEOF_PTR 4
83 # elif (UINTPTR_MAX == 0xFFFFFFFFFFFFFFFF)
84 # define LG_SIZEOF_PTR 8
86 #elif defined(__WORDSIZE)
87 # if (__WORDSIZE == 32)
88 # define LG_SIZEOF_PTR 4
89 # elif (__WORDSIZE == 64)
90 # define LG_SIZEOF_PTR 8
95 # error "Cannot find pointer size"
98 #if (UINT_MAX == 0xFFFFFFFF)
99 # define LG_SIZEOF_INT 4
100 #elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF)
101 # define LG_SIZEOF_INT 8
103 # error "Cannot find int size"
109 #if (!defined(__cplusplus)) && (!defined(__COVERITY__)) && \
110 (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 406))
111 # define ATOMIC_STATIC_ASSERT(a, msg) __extension__ _Static_assert(a, msg);
116 # define ATOMIC_ASSERT_CONCAT_(a, b) a##b
117 # define ATOMIC_ASSERT_CONCAT(a, b) ATOMIC_ASSERT_CONCAT_(a, b)
119 # if defined(__COUNTER__)
120 # define ATOMIC_STATIC_ASSERT(a, msg) \
122 enum { ATOMIC_ASSERT_CONCAT(static_assert_, __COUNTER__) = 1 / (int)(!!(a)) };
128 # define ATOMIC_STATIC_ASSERT(a, msg) \
130 enum { ATOMIC_ASSERT_CONCAT(assert_line_, __LINE__) = 1 / (int)(!!(a)) };