 |
Blender
V2.93
|
Go to the documentation of this file.
47 #ifndef __ATOMIC_OPS_UTILS_H__
48 #define __ATOMIC_OPS_UTILS_H__
59 # define ATOMIC_INLINE static __forceinline
61 # define ATOMIC_INLINE static inline __attribute__((always_inline))
65 # define _ATOMIC_LIKELY(x) __builtin_expect(!!(x), 1)
66 # define _ATOMIC_UNLIKELY(x) __builtin_expect(!!(x), 0)
68 # define _ATOMIC_LIKELY(x) (x)
69 # define _ATOMIC_UNLIKELY(x) (x)
72 #if defined(__SIZEOF_POINTER__)
73 # define LG_SIZEOF_PTR __SIZEOF_POINTER__
74 #elif defined(UINTPTR_MAX)
75 # if (UINTPTR_MAX == 0xFFFFFFFF)
76 # define LG_SIZEOF_PTR 4
77 # elif (UINTPTR_MAX == 0xFFFFFFFFFFFFFFFF)
78 # define LG_SIZEOF_PTR 8
80 #elif defined(__WORDSIZE)
81 # if (__WORDSIZE == 32)
82 # define LG_SIZEOF_PTR 4
83 # elif (__WORDSIZE == 64)
84 # define LG_SIZEOF_PTR 8
89 # error "Cannot find pointer size"
92 #if (UINT_MAX == 0xFFFFFFFF)
93 # define LG_SIZEOF_INT 4
94 #elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF)
95 # define LG_SIZEOF_INT 8
97 # error "Cannot find int size"
103 #if (!defined(__cplusplus)) && (!defined(__COVERITY__)) && \
104 (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 406))
105 # define ATOMIC_STATIC_ASSERT(a, msg) __extension__ _Static_assert(a, msg);
110 # define ATOMIC_ASSERT_CONCAT_(a, b) a##b
111 # define ATOMIC_ASSERT_CONCAT(a, b) ATOMIC_ASSERT_CONCAT_(a, b)
113 # if defined(__COUNTER__)
114 # define ATOMIC_STATIC_ASSERT(a, msg) \
116 enum { ATOMIC_ASSERT_CONCAT(static_assert_, __COUNTER__) = 1 / (int)(!!(a)) };
122 # define ATOMIC_STATIC_ASSERT(a, msg) \
124 enum { ATOMIC_ASSERT_CONCAT(assert_line_, __LINE__) = 1 / (int)(!!(a)) };