#include <stdint.h>
#include "gcc_ia32_common.h"
Go to the source code of this file.
◆ __TBB_acquire_consistency_helper
◆ __TBB_AtomicAND
◆ __TBB_AtomicOR
◆ __TBB_compiler_fence
#define __TBB_compiler_fence |
( |
| ) |
__asm__ __volatile__("": : :"memory") |
◆ __TBB_control_consistency_helper
◆ __TBB_ENDIANNESS
◆ __TBB_fildq
#define __TBB_fildq "fildq" |
◆ __TBB_fistpq
#define __TBB_fistpq "fistpq" |
◆ __TBB_full_memory_fence
#define __TBB_full_memory_fence |
( |
| ) |
__asm__ __volatile__("mfence": : :"memory") |
◆ __TBB_IA32_CAS8_NOINLINE
#define __TBB_IA32_CAS8_NOINLINE |
◆ __TBB_MACHINE_DEFINE_ATOMICS
#define __TBB_MACHINE_DEFINE_ATOMICS |
( |
|
S, |
|
|
|
T, |
|
|
|
X, |
|
|
|
R |
|
) |
| |
Value:static inline T __TBB_machine_cmpswp##
S (
volatile void *ptr, T
value, T comparand ) \
{ \
T result; \
\
__asm__ __volatile__("lock\ncmpxchg" X " %2,%1" \
: "memory"); \
return result; \
} \
\
static
inline T __TBB_machine_fetchadd##
S(
volatile void *ptr, T addend) \
{ \
T result; \
__asm__ __volatile__("lock\nxadd" X " %0,%1" \
: "memory"); \
return result; \
} \
\
static
inline T __TBB_machine_fetchstore##
S(
volatile void *ptr, T
value) \
{ \
T result; \
__asm__ __volatile__("lock\nxchg" X " %0,%1" \
: "memory"); \
return result; \
} \
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 ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark S
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
Definition at line 41 of file linux_ia32.h.
◆ __TBB_release_consistency_helper
◆ __TBB_USE_FETCHSTORE_AS_FULL_FENCED_STORE
#define __TBB_USE_FETCHSTORE_AS_FULL_FENCED_STORE 1 |
◆ __TBB_USE_GENERIC_DWORD_FETCH_ADD
#define __TBB_USE_GENERIC_DWORD_FETCH_ADD 1 |
◆ __TBB_USE_GENERIC_DWORD_FETCH_STORE
#define __TBB_USE_GENERIC_DWORD_FETCH_STORE 1 |
◆ __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE
#define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE 1 |
◆ __TBB_USE_GENERIC_RELAXED_LOAD_STORE
#define __TBB_USE_GENERIC_RELAXED_LOAD_STORE 1 |
◆ __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE
#define __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE 1 |
◆ __TBB_VOLATILE
#define __TBB_VOLATILE volatile |
◆ __TBB_WORDSIZE
◆ __TBB_machine_aligned_load8()
static int64_t __TBB_machine_aligned_load8 |
( |
const volatile void * |
ptr | ) |
|
|
inlinestatic |
◆ __TBB_machine_aligned_store8()
static void __TBB_machine_aligned_store8 |
( |
volatile void * |
ptr, |
|
|
int64_t |
value |
|
) |
| |
|
inlinestatic |
Definition at line 177 of file linux_ia32.h.
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
#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
References __TBB_ASSERT, __TBB_fildq, __TBB_fistpq, __TBB_VOLATILE, tbb::internal::is_aligned(), and value.
Referenced by __TBB_machine_store8().
◆ __TBB_machine_and()
static void __TBB_machine_and |
( |
volatile void * |
ptr, |
|
|
uint32_t |
addend |
|
) |
| |
|
inlinestatic |
◆ __TBB_machine_cmpswp8()
Definition at line 89 of file linux_ia32.h.
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])
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
References __TBB_VOLATILE, and value.
Referenced by __TBB_machine_load8().
◆ __TBB_machine_load8()
static int64_t __TBB_machine_load8 |
( |
const volatile void * |
ptr | ) |
|
|
inlinestatic |
Definition at line 184 of file linux_ia32.h.
185 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN 189 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN static __TBB_IA32_CAS8_NOINLINE int64_t __TBB_machine_cmpswp8(volatile void *ptr, int64_t value, int64_t comparand)
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
static int64_t __TBB_machine_aligned_load8(const volatile void *ptr)
References __TBB_machine_aligned_load8(), __TBB_machine_cmpswp8(), and tbb::internal::is_aligned().
◆ __TBB_machine_or()
static void __TBB_machine_or |
( |
volatile void * |
ptr, |
|
|
uint32_t |
addend |
|
) |
| |
|
inlinestatic |
◆ __TBB_machine_store8()
static void __TBB_machine_store8 |
( |
volatile void * |
ptr, |
|
|
int64_t |
value |
|
) |
| |
|
inlinestatic |
Definition at line 202 of file linux_ia32.h.
203 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN 207 #if __TBB_FORCE_64BIT_ALIGNMENT_BROKEN 210 #if TBB_USE_PERFORMANCE_WARNINGS 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)
void __TBB_machine_store8_slow(volatile void *ptr, int64_t value)
Handles misaligned 8-byte store.
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
References __TBB_machine_aligned_store8(), __TBB_machine_store8_slow(), __TBB_machine_store8_slow_perf_warning(), tbb::internal::is_aligned(), and value.
◆ __TBB_machine_store8_slow()
void __TBB_machine_store8_slow |
( |
volatile void * |
ptr, |
|
|
int64_t |
value |
|
) |
| |
◆ __TBB_machine_store8_slow_perf_warning()
void __TBB_machine_store8_slow_perf_warning |
( |
volatile void * |
ptr | ) |
|