17 #if !defined(__TBB_machine_H) || defined(__TBB_machine_linux_ia32_H)    18 #error Do not #include this internal file directly; use public TBB headers instead.    21 #define __TBB_machine_linux_ia32_H    26 #define __TBB_WORDSIZE 4    27 #define __TBB_ENDIANNESS __TBB_ENDIAN_LITTLE    29 #define __TBB_compiler_fence() __asm__ __volatile__("": : :"memory")    30 #define __TBB_control_consistency_helper() __TBB_compiler_fence()    31 #define __TBB_acquire_consistency_helper() __TBB_compiler_fence()    32 #define __TBB_release_consistency_helper() __TBB_compiler_fence()    33 #define __TBB_full_memory_fence()          __asm__ __volatile__("mfence": : :"memory")    35 #if __TBB_ICC_ASM_VOLATILE_BROKEN    36 #define __TBB_VOLATILE    38 #define __TBB_VOLATILE volatile    41 #define __TBB_MACHINE_DEFINE_ATOMICS(S,T,X,R)                                        \    42 static inline T __TBB_machine_cmpswp##S (volatile void *ptr, T value, T comparand )  \    46     __asm__ __volatile__("lock\ncmpxchg" X " %2,%1"                                  \    47                           : "=a"(result), "=m"(*(__TBB_VOLATILE T*)ptr)              \    48                           : "q"(value), "0"(comparand), "m"(*(__TBB_VOLATILE T*)ptr) \    53 static inline T __TBB_machine_fetchadd##S(volatile void *ptr, T addend)              \    56     __asm__ __volatile__("lock\nxadd" X " %0,%1"                                     \    57                           : R (result), "=m"(*(__TBB_VOLATILE T*)ptr)                \    58                           : "0"(addend), "m"(*(__TBB_VOLATILE T*)ptr)                \    63 static inline  T __TBB_machine_fetchstore##S(volatile void *ptr, T value)            \    66     __asm__ __volatile__("lock\nxchg" X " %0,%1"                                     \    67                           : R (result), "=m"(*(__TBB_VOLATILE T*)ptr)                \    68                           : "0"(value), "m"(*(__TBB_VOLATILE T*)ptr)                 \    78 #pragma warning( push )    80 #pragma warning( disable: 998 )    83 #if __TBB_GCC_CAS8_BUILTIN_INLINING_BROKEN    84 #define  __TBB_IA32_CAS8_NOINLINE  __attribute__ ((noinline))    86 #define  __TBB_IA32_CAS8_NOINLINE    91 #if (__TBB_GCC_BUILTIN_ATOMICS_PRESENT || (__TBB_GCC_VERSION >= 40102)) && !__TBB_GCC_64BIT_ATOMIC_BUILTINS_BROKEN    92     return __sync_val_compare_and_swap( reinterpret_cast<volatile int64_t*>(ptr), comparand, 
value );
   105     __asm__ __volatile__ (
   109             "lock\n\t cmpxchg8b %1\n\t"   111             "lock\n\t cmpxchg8b (%3)\n\t"   123              , 
"m"(i32[0]), 
"c"(i32[1])
   130     __asm__ __volatile__ (
   131             "lock\n\t cmpxchg8b %1\n\t"   135              , 
"b"(i32[0]), 
"c"(i32[1])
   143 #undef __TBB_IA32_CAS8_NOINLINE   146 #pragma warning( pop )   147 #endif // warning 998 is back   150     __asm__ __volatile__(
"lock\norl %1,%0" : 
"=m"(*(
__TBB_VOLATILE uint32_t *)ptr) : 
"r"(addend), 
"m"(*(
__TBB_VOLATILE uint32_t *)ptr) : 
"memory");
   154     __asm__ __volatile__(
"lock\nandl %1,%0" : 
"=m"(*(
__TBB_VOLATILE uint32_t *)ptr) : 
"r"(addend), 
"m"(*(
__TBB_VOLATILE uint32_t *)ptr) : 
"memory");
   162 #define __TBB_fildq  "fildll"   163 #define __TBB_fistpq "fistpll"   165 #define __TBB_fildq  "fildq"   166 #define __TBB_fistpq "fistpq"   185 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN   189 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN   203 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN   207 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN   210 #if TBB_USE_PERFORMANCE_WARNINGS   219 #define __TBB_AtomicOR(P,V) __TBB_machine_or(P,V)   220 #define __TBB_AtomicAND(P,V) __TBB_machine_and(P,V)   222 #define __TBB_USE_GENERIC_DWORD_FETCH_ADD                   1   223 #define __TBB_USE_GENERIC_DWORD_FETCH_STORE                 1   224 #define __TBB_USE_FETCHSTORE_AS_FULL_FENCED_STORE           1   225 #define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE            1   226 #define __TBB_USE_GENERIC_RELAXED_LOAD_STORE                1   227 #define __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE 1 
#define __TBB_IA32_CAS8_NOINLINE
 
static __TBB_IA32_CAS8_NOINLINE int64_t __TBB_machine_cmpswp8(volatile void *ptr, int64_t value, int64_t comparand)
 
static void __TBB_machine_or(volatile void *ptr, uint32_t addend)
 
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
 
static void __TBB_machine_aligned_store8(volatile void *ptr, int64_t value)
 
void __TBB_machine_store8_slow_perf_warning(volatile void *ptr)
 
#define __TBB_MACHINE_DEFINE_ATOMICS(S, T, X, R)
 
static void __TBB_machine_and(volatile void *ptr, uint32_t addend)
 
static void __TBB_machine_store8(volatile void *ptr, int64_t value)
 
void __TBB_machine_store8_slow(volatile void *ptr, int64_t value)
Handles misaligned 8-byte store.
 
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
 
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
 
static int64_t __TBB_machine_load8(const volatile void *ptr)
 
static int64_t __TBB_machine_aligned_load8(const volatile void *ptr)