21 #ifndef __TBB_machine_H    22 #error Do not include this file directly; include tbb_machine.h instead    27 #include <sys/param.h>    30 #define __TBB_WORDSIZE 4    37 #if __BIG_ENDIAN__ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__==__ORDER_BIG_ENDIAN__)    38     #define __TBB_ENDIANNESS __TBB_ENDIAN_BIG    39 #elif __LITTLE_ENDIAN__ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__)    40     #define __TBB_ENDIANNESS __TBB_ENDIAN_LITTLE    41 #elif defined(__BYTE_ORDER__)    42     #define __TBB_ENDIANNESS __TBB_ENDIAN_UNSUPPORTED    44     #define __TBB_ENDIANNESS __TBB_ENDIAN_DETECT    48 #define __TBB_compiler_fence()    __asm__ __volatile__("": : :"memory")    49 #define __TBB_full_memory_fence() __asm__ __volatile__("dmb ish": : :"memory")    50 #define __TBB_control_consistency_helper() __TBB_full_memory_fence()    51 #define __TBB_acquire_consistency_helper() __TBB_full_memory_fence()    52 #define __TBB_release_consistency_helper() __TBB_full_memory_fence()    77         "strexeq    %0, %5, [%3]\n"    78         : 
"=&r" (res), 
"=&r" (oldval), 
"+Qo" (*(
volatile int32_t*)ptr)
    79         : 
"r" ((
volatile int32_t *)ptr), 
"Ir" (comparand), 
"r" (
value)
   103         __asm__ __volatile__(
   105             "ldrexd     %1, %H1, [%3]\n"   110             "strexdeq   %0, %5, %H5, [%3]"   111         : 
"=&r" (res), 
"=&r" (oldval), 
"+Qo" (*(
volatile int64_t*)ptr)
   112         : 
"r" ((
volatile int64_t *)ptr), 
"r" (comparand), 
"r" (
value)
   124     int32_t result, tmp2;
   128     __asm__ __volatile__(
   129 "1:     ldrex   %0, [%4]\n"   131 "       strex   %1, %3, [%4]\n"   134     : 
"=&r" (result), 
"=&r" (tmp), 
"+Qo" (*(
volatile int32_t*)ptr), 
"=&r"(tmp2)
   135     : 
"r" ((
volatile int32_t *)ptr), 
"Ir" (addend)
   146     int64_t result, tmp2;
   150     __asm__ __volatile__(
   151 "1:     ldrexd  %0, %H0, [%4]\n"   153 "       adc     %H3, %H0, %H5\n"   154 "       strexd  %1, %3, %H3, [%4]\n"   157     : 
"=&r" (result), 
"=&r" (tmp), 
"+Qo" (*(
volatile int64_t*)ptr), 
"=&r"(tmp2)
   158     : 
"r" ((
volatile int64_t *)ptr), 
"r" (addend)
   169     template <
typename T, 
size_t S>
   170     struct machine_load_store_relaxed {
   171         static inline T 
load ( 
const volatile T& location ) {
   172             const T 
value = location;
   182         static inline void store ( 
volatile T& location, T 
value ) {
   190 #define __TBB_CompareAndSwap4(P,V,C) __TBB_machine_cmpswp4(P,V,C)   191 #define __TBB_CompareAndSwap8(P,V,C) __TBB_machine_cmpswp8(P,V,C)   194 #define __TBB_USE_GENERIC_PART_WORD_CAS                         1   195 #define __TBB_USE_GENERIC_PART_WORD_FETCH_ADD                   1   196 #define __TBB_USE_GENERIC_PART_WORD_FETCH_STORE                 1   197 #define __TBB_USE_GENERIC_FETCH_STORE                           1   198 #define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE                1   199 #define __TBB_USE_GENERIC_DWORD_LOAD_STORE                      1   200 #define __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE     1   201 #elif defined __aarch64__   205 #error compilation requires an ARMv7-a or ARMv8-a architecture.   206 #endif // __ARM_ARCH_7A__   212         __asm__ __volatile__(
"yield" ::: 
"memory");
   216 #define __TBB_Pause(V) __TBB_machine_pause(V) #define __TBB_machine_cmpswp4
 
#define __TBB_acquire_consistency_helper()
 
long __TBB_machine_fetchadd4(volatile void *ptr, __int32 addend)
 
static void store(T &location, T value)
 
static T load(const T &location)
 
static int64_t __TBB_machine_fetchadd8(volatile void *ptr, int64_t addend)
 
#define __TBB_machine_cmpswp8
 
#define __TBB_full_memory_fence()
 
void __TBB_machine_pause(int32_t delay)
 
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value