Home ⌂Doc Index ◂Up ▴
Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
icc_generic.h File Reference
#include "gcc_ia32_common.h"
Include dependency graph for icc_generic.h:

Go to the source code of this file.

Classes

struct  tbb::internal::machine_load_store< T, S >
 
struct  tbb::internal::machine_load_store_relaxed< T, S >
 
struct  tbb::internal::machine_load_store_seq_cst< T, S >
 

Namespaces

 tbb
 The graph class.
 
 tbb::internal
 Identifiers declared inside namespace internal should never be used directly by client code.
 
 tbb::internal::icc_intrinsics_port
 

Macros

#define __TBB_WORDSIZE   8
 
#define __TBB_ENDIANNESS   __TBB_ENDIAN_LITTLE
 
#define __TBB_compiler_fence()   __asm__ __volatile__("": : :"memory")
 
#define __TBB_full_memory_fence()   __asm__ __volatile__("mfence": : :"memory")
 
#define __TBB_control_consistency_helper()   __TBB_compiler_fence()
 
#define __TBB_MACHINE_DEFINE_ATOMICS(S, T, M)
 
#define __TBB_USE_FENCED_ATOMICS   1
 

Typedefs

typedef enum tbb::internal::memory_order tbb::internal::memory_order
 
typedef enum tbb::internal::icc_intrinsics_port::memory_order_map tbb::internal::icc_intrinsics_port::memory_order_map
 

Enumerations

enum  tbb::internal::memory_order {
  tbb::internal::memory_order_relaxed, tbb::internal::memory_order_consume, tbb::internal::memory_order_acquire, tbb::internal::memory_order_release,
  tbb::internal::memory_order_acq_rel, tbb::internal::memory_order_seq_cst
}
 
enum  tbb::internal::icc_intrinsics_port::memory_order_map { tbb::internal::icc_intrinsics_port::relaxed = memory_order_relaxed, tbb::internal::icc_intrinsics_port::acquire = memory_order_acquire, tbb::internal::icc_intrinsics_port::release = memory_order_release, tbb::internal::icc_intrinsics_port::full_fence = memory_order_seq_cst }
 

Functions

template<typename T >
tbb::internal::icc_intrinsics_port::convert_argument (T value)
 
template<typename T >
voidtbb::internal::icc_intrinsics_port::convert_argument (T *value)
 
template<typename T >
void __TBB_machine_OR (T *operand, T addend)
 
template<typename T >
void __TBB_machine_AND (T *operand, T addend)
 

Macro Definition Documentation

◆ __TBB_compiler_fence

#define __TBB_compiler_fence ( )    __asm__ __volatile__("": : :"memory")

Definition at line 51 of file icc_generic.h.

◆ __TBB_control_consistency_helper

#define __TBB_control_consistency_helper ( )    __TBB_compiler_fence()

Definition at line 66 of file icc_generic.h.

◆ __TBB_ENDIANNESS

#define __TBB_ENDIANNESS   __TBB_ENDIAN_LITTLE

Definition at line 42 of file icc_generic.h.

◆ __TBB_full_memory_fence

#define __TBB_full_memory_fence ( )    __asm__ __volatile__("mfence": : :"memory")

Definition at line 61 of file icc_generic.h.

◆ __TBB_MACHINE_DEFINE_ATOMICS

#define __TBB_MACHINE_DEFINE_ATOMICS (   S,
  T,
 
)
Value:
inline T __TBB_machine_cmpswp##S##M( volatile void *ptr, T value, T comparand ) { \
__atomic_compare_exchange_strong_explicit( \
(T*)ptr \
,&comparand \
,value \
, tbb::internal::icc_intrinsics_port::M \
, tbb::internal::icc_intrinsics_port::M); \
return comparand; \
} \
\
inline T __TBB_machine_fetchstore##S##M(volatile void *ptr, T value) { \
return __atomic_exchange_explicit((T*)ptr, value, tbb::internal::icc_intrinsics_port::M); \
} \
\
inline T __TBB_machine_fetchadd##S##M(volatile void *ptr, T value) { \
return __atomic_fetch_add_explicit((T*)ptr, value, tbb::internal::icc_intrinsics_port::M); \
} \
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 135 of file icc_generic.h.

◆ __TBB_USE_FENCED_ATOMICS

#define __TBB_USE_FENCED_ATOMICS   1

Definition at line 177 of file icc_generic.h.

◆ __TBB_WORDSIZE

#define __TBB_WORDSIZE   8

Definition at line 40 of file icc_generic.h.

Function Documentation

◆ __TBB_machine_AND()

template<typename T >
void __TBB_machine_AND ( T *  operand,
addend 
)
inline

Definition at line 255 of file icc_generic.h.

255  {
256  __atomic_fetch_and_explicit(operand, addend, tbb::internal::memory_order_seq_cst);
257 }

References tbb::internal::memory_order_seq_cst.

◆ __TBB_machine_OR()

template<typename T >
void __TBB_machine_OR ( T *  operand,
addend 
)
inline

Definition at line 250 of file icc_generic.h.

250  {
251  __atomic_fetch_or_explicit(operand, addend, tbb::internal::memory_order_seq_cst);
252 }

References tbb::internal::memory_order_seq_cst.


Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.