![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
#include "linux_common.h"
Include dependency graph for Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h:Go to the source code of this file.
Classes | |
| struct | __TBB_machine_load_store< T, S > |
| struct | __TBB_machine_load_store< T, 8 > |
Defines | |
| #define | __MACHINE_DECL_ATOMICS(S, T, X) |
| #define | __TBB_AtomicAND(P, V) __TBB_machine_and(P,V) |
| #define | __TBB_AtomicOR(P, V) __TBB_machine_or(P,V) |
| #define | __TBB_BIG_ENDIAN 0 |
| #define | __TBB_CompareAndSwap1(P, V, C) __TBB_machine_cmpswp1(P,V,C) |
| #define | __TBB_CompareAndSwap2(P, V, C) __TBB_machine_cmpswp2(P,V,C) |
| #define | __TBB_CompareAndSwap4(P, V, C) __TBB_machine_cmpswp4(P,V,C) |
| #define | __TBB_CompareAndSwap8(P, V, C) __TBB_machine_cmpswp8(P,V,C) |
| #define | __TBB_CompareAndSwapW(P, V, C) __TBB_machine_cmpswp4(P,V,C) |
| #define | __TBB_FetchAndAdd1(P, V) __TBB_machine_fetchadd1(P,V) |
| #define | __TBB_FetchAndAdd2(P, V) __TBB_machine_fetchadd2(P,V) |
| #define | __TBB_FetchAndAdd4(P, V) __TBB_machine_fetchadd4(P,V) |
| #define | __TBB_FetchAndAddW(P, V) __TBB_machine_fetchadd4(P,V) |
| #define | __TBB_FetchAndAddWrelease(P, V) __TBB_FetchAndAddW(P,V) |
| #define | __TBB_FetchAndDecrementWrelease(P) __TBB_FetchAndAddW(P,-1) |
| #define | __TBB_FetchAndIncrementWacquire(P) __TBB_FetchAndAddW(P,1) |
| #define | __TBB_FetchAndStore1(P, V) __TBB_machine_fetchstore1(P,V) |
| #define | __TBB_FetchAndStore2(P, V) __TBB_machine_fetchstore2(P,V) |
| #define | __TBB_FetchAndStore4(P, V) __TBB_machine_fetchstore4(P,V) |
| #define | __TBB_FetchAndStoreW(P, V) __TBB_machine_fetchstore4(P,V) |
| #define | __TBB_Load8(P) __TBB_machine_load8(P) |
| #define | __TBB_load_with_acquire(L) __TBB_machine_load_with_acquire((L)) |
| #define | __TBB_Log2(V) __TBB_machine_lg(V) |
| #define | __TBB_Pause(V) __TBB_machine_pause(V) |
| #define | __TBB_release_consistency_helper() __asm__ __volatile__("": : :"memory") |
| #define | __TBB_Store8(P, V) __TBB_machine_store8(P,V) |
| #define | __TBB_store_with_release(L, V) __TBB_machine_store_with_release((L),(V)) |
| #define | __TBB_VOLATILE volatile |
| #define | __TBB_WORDSIZE 4 |
Functions | |
| static void | __TBB_machine_and (volatile void *ptr, uint32_t addend) |
| static int8_t | __TBB_machine_cmpswp1 (volatile void *ptr, int8_t value, int8_t comparand) |
| static int16_t | __TBB_machine_cmpswp2 (volatile void *ptr, int16_t value, int16_t comparand) |
| static int32_t | __TBB_machine_cmpswp4 (volatile void *ptr, int32_t value, int32_t comparand) |
| static int64_t | __TBB_machine_cmpswp8 (volatile void *ptr, int64_t value, int64_t comparand) |
| static int8_t | __TBB_machine_fetchadd1 (volatile void *ptr, int8_t addend) |
| static int16_t | __TBB_machine_fetchadd2 (volatile void *ptr, int16_t addend) |
| static int32_t | __TBB_machine_fetchadd4 (volatile void *ptr, int32_t addend) |
| static int8_t | __TBB_machine_fetchstore1 (volatile void *ptr, int8_t value) |
| static int16_t | __TBB_machine_fetchstore2 (volatile void *ptr, int16_t value) |
| static int32_t | __TBB_machine_fetchstore4 (volatile void *ptr, int32_t value) |
| static int32_t | __TBB_machine_lg (uint32_t x) |
| static int64_t | __TBB_machine_load8 (const volatile void *ptr) |
| template<typename T > | |
| T | __TBB_machine_load_with_acquire (const volatile T &location) |
| static void | __TBB_machine_or (volatile void *ptr, uint32_t addend) |
| static void | __TBB_machine_pause (int32_t delay) |
| 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. | |
| void | __TBB_machine_store8_slow_perf_warning (volatile void *ptr) |
| template<typename T , typename V > | |
| void | __TBB_machine_store_with_release (volatile T &location, V value) |
| void | __TBB_rel_acq_fence () |
static inline T __TBB_machine_cmpswp##S (volatile void *ptr, T value, T comparand ) \ { \ T result; \ \ __asm__ __volatile__("lock\ncmpxchg" X " %2,%1" \ : "=a"(result), "=m"(*(__TBB_VOLATILE T*)ptr) \ : "q"(value), "0"(comparand), "m"(*(__TBB_VOLATILE T*)ptr) \ : "memory"); \ return result; \ } \ \ static inline T __TBB_machine_fetchadd##S(volatile void *ptr, T addend) \ { \ T result; \ __asm__ __volatile__("lock\nxadd" X " %0,%1" \ : "=r"(result), "=m"(*(__TBB_VOLATILE T*)ptr) \ : "0"(addend), "m"(*(__TBB_VOLATILE T*)ptr) \ : "memory"); \ return result; \ } \ \ static inline T __TBB_machine_fetchstore##S(volatile void *ptr, T value) \ { \ T result; \ __asm__ __volatile__("lock\nxchg" X " %0,%1" \ : "=r"(result), "=m"(*(__TBB_VOLATILE T*)ptr) \ : "0"(value), "m"(*(__TBB_VOLATILE T*)ptr) \ : "memory"); \ return result; \ } \
Definition at line 50 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 243 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 242 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
| #define __TBB_BIG_ENDIAN 0 |
Definition at line 38 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 223 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 224 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 225 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 226 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 227 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 229 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 230 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 231 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 232 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 255 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
| #define __TBB_FetchAndDecrementWrelease | ( | P | ) | __TBB_FetchAndAddW(P,-1) |
Definition at line 257 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
| #define __TBB_FetchAndIncrementWacquire | ( | P | ) | __TBB_FetchAndAddW(P,1) |
Definition at line 256 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 234 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 235 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 236 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 237 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
| #define __TBB_Load8 | ( | P | ) | __TBB_machine_load8(P) |
Definition at line 240 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 218 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 252 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 251 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
| #define __TBB_release_consistency_helper | ( | ) | __asm__ __volatile__("": : :"memory") |
Definition at line 40 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 239 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Definition at line 219 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
| #define __TBB_VOLATILE volatile |
Definition at line 47 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
Referenced by __TBB_machine_and(), __TBB_machine_cmpswp8(), __TBB_machine_load8(), __TBB_machine_or(), and __TBB_machine_store8().
| #define __TBB_WORDSIZE 4 |
Definition at line 37 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
| static void __TBB_machine_and | ( | volatile void * | ptr, |
| uint32_t | addend | ||
| ) | [inline, static] |
Definition at line 135 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
References __TBB_VOLATILE.
{
__asm__ __volatile__("lock\nandl %1,%0" : "=m"(*(__TBB_VOLATILE uint32_t *)ptr) : "r"(addend), "m"(*(__TBB_VOLATILE uint32_t *)ptr) : "memory");
}
| static int8_t __TBB_machine_cmpswp1 | ( | volatile void * | ptr, |
| int8_t | value, | ||
| int8_t | comparand | ||
| ) | [inline, static] |
Definition at line 82 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
| static int16_t __TBB_machine_cmpswp2 | ( | volatile void * | ptr, |
| int16_t | value, | ||
| int16_t | comparand | ||
| ) | [inline, static] |
Definition at line 83 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
| static int32_t __TBB_machine_cmpswp4 | ( | volatile void * | ptr, |
| int32_t | value, | ||
| int32_t | comparand | ||
| ) | [inline, static] |
Definition at line 84 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
| static int64_t __TBB_machine_cmpswp8 | ( | volatile void * | ptr, |
| int64_t | value, | ||
| int64_t | comparand | ||
| ) | [inline, static] |
Definition at line 86 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
References __TBB_VOLATILE.
{
int64_t result;
#if __PIC__
/* compiling position-independent code */
// EBX register preserved for compliance with position-independent code rules on IA32
__asm__ __volatile__ (
"pushl %%ebx\n\t"
"movl (%%ecx),%%ebx\n\t"
"movl 4(%%ecx),%%ecx\n\t"
"lock\n\t cmpxchg8b %1\n\t"
"popl %%ebx"
: "=A"(result), "=m"(*(int64_t *)ptr)
: "m"(*(int64_t *)ptr)
, "0"(comparand)
, "c"(&value)
: "memory", "esp"
#if __INTEL_COMPILER
,"ebx"
#endif
);
#else /* !__PIC__ */
union {
int64_t i64;
int32_t i32[2];
};
i64 = value;
__asm__ __volatile__ (
"lock\n\t cmpxchg8b %1\n\t"
: "=A"(result), "=m"(*(__TBB_VOLATILE int64_t *)ptr)
: "m"(*(__TBB_VOLATILE int64_t *)ptr)
, "0"(comparand)
, "b"(i32[0]), "c"(i32[1])
: "memory"
);
#endif /* __PIC__ */
return result;
}
Definition at line 82 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
Definition at line 83 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
Definition at line 84 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
Definition at line 82 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
Definition at line 83 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
Definition at line 84 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
Definition at line 125 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
int32_t j;
__asm__ ("bsr %1,%0" : "=r"(j) : "r"(x));
return j;
}
| static int64_t __TBB_machine_load8 | ( | const volatile void * | ptr | ) | [inline, static] |
Definition at line 146 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
References __TBB_machine_cmpswp8(), and __TBB_VOLATILE.
{
int64_t result;
if( ((uint32_t)ptr&7u)==0 ) {
// Aligned load
__asm__ __volatile__ ( "fildq %1\n\t"
"fistpq %0" : "=m"(result) : "m"(*(const __TBB_VOLATILE uint64_t*)ptr) : "memory" );
} else {
// Unaligned load
result = __TBB_machine_cmpswp8(const_cast<void*>(ptr),0,0);
}
return result;
}
Definition at line 209 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
return __TBB_machine_load_store<T,sizeof(T)>::load_with_acquire(location);
}
| static void __TBB_machine_or | ( | volatile void * | ptr, |
| uint32_t | addend | ||
| ) | [inline, static] |
Definition at line 131 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
References __TBB_VOLATILE.
{
__asm__ __volatile__("lock\norl %1,%0" : "=m"(*(__TBB_VOLATILE uint32_t *)ptr) : "r"(addend), "m"(*(__TBB_VOLATILE uint32_t *)ptr) : "memory");
}
| static void __TBB_machine_pause | ( | int32_t | delay | ) | [inline, static] |
Definition at line 139 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
for (int32_t i = 0; i < delay; i++) {
__asm__ __volatile__("pause;");
}
return;
}
| static void __TBB_machine_store8 | ( | volatile void * | ptr, |
| int64_t | value | ||
| ) | [inline, static] |
Definition at line 164 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
References __TBB_machine_store8_slow(), __TBB_machine_store8_slow_perf_warning(), and __TBB_VOLATILE.
{
if( ((uint32_t)ptr&7u)==0 ) {
// Aligned store
__asm__ __volatile__ ( "fildq %1\n\t"
"fistpq %0" : "=m"(*(__TBB_VOLATILE int64_t*)ptr) : "m"(value) : "memory" );
} else {
// Unaligned store
#if TBB_USE_PERFORMANCE_WARNINGS
__TBB_machine_store8_slow_perf_warning(ptr);
#endif /* TBB_USE_PERFORMANCE_WARNINGS */
__TBB_machine_store8_slow(ptr,value);
}
}
| void __TBB_machine_store8_slow | ( | volatile void * | ptr, |
| int64_t | value | ||
| ) |
Defined in tbb_misc.cpp
| void __TBB_machine_store8_slow_perf_warning | ( | volatile void * | ptr | ) |
| void __TBB_machine_store_with_release | ( | volatile T & | location, |
| V | value | ||
| ) | [inline] |
Definition at line 214 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{
__TBB_machine_load_store<T,sizeof(T)>::store_with_release(location,value);
}
| void __TBB_rel_acq_fence | ( | ) | [inline] |
Definition at line 42 of file Third Party Tech/TBB/tbb30_20100406oss_win/tbb30_20100406oss/include/tbb/machine/linux_ia32.h.
{ __asm__ __volatile__("mfence": : :"memory"); }
Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.