18 #if !defined(__TBB_machine_H) || defined(__TBB_machine_sunos_sparc_H)
19 #error Do not #include this internal file directly; use public TBB headers instead.
22 #define __TBB_machine_sunos_sparc_H
27 #define __TBB_WORDSIZE 8
30 #define __TBB_ENDIANNESS __TBB_ENDIAN_BIG
34 #define __TBB_compiler_fence() __asm__ __volatile__ ("": : :"memory")
35 #define __TBB_control_consistency_helper() __TBB_compiler_fence()
36 #define __TBB_acquire_consistency_helper() __TBB_compiler_fence()
37 #define __TBB_release_consistency_helper() __TBB_compiler_fence()
38 #define __TBB_full_memory_fence() __asm__ __volatile__("membar #LoadLoad|#LoadStore|#StoreStore|#StoreLoad": : : "memory")
55 :
"=m"(*(int32_t *)ptr),
"=r"(result)
56 :
"m"(*(int32_t *)ptr),
"1"(
value),
"r"(comparand),
"r"(ptr)
72 :
"=m"(*(int64_t *)ptr),
"=r"(result)
73 :
"m"(*(int64_t *)ptr),
"1"(
value),
"r"(comparand),
"r"(ptr)
90 __asm__ __volatile__ (
91 "0:\t add\t %3, %4, %0\n"
92 "\t cas\t [%2], %3, %0\n"
94 "\t bne,a,pn\t %%icc, 0b\n"
96 :
"=&r"(result),
"=m"(*(int32_t *)ptr)
97 :
"r"(ptr),
"r"(*(int32_t *)ptr),
"r"(addend),
"m"(*(int32_t *)ptr)
110 __asm__ __volatile__ (
111 "0:\t add\t %3, %4, %0\n"
112 "\t casx\t [%2], %3, %0\n"
114 "\t bne,a,pn\t %%xcc, 0b\n"
116 :
"=&r"(result),
"=m"(*(int64_t *)ptr)
117 :
"r"(ptr),
"r"(*(int64_t *)ptr),
"r"(addend),
"m"(*(int64_t *)ptr)
137 __asm__ (
"popc %1, %0" :
"=r"(
count) :
"r"(x) );
144 __asm__ __volatile__ (
145 "0:\t or\t %2, %3, %%g1\n"
146 "\t casx\t [%1], %2, %%g1\n"
147 "\t cmp\t %2, %%g1\n"
148 "\t bne,a,pn\t %%xcc, 0b\n"
150 :
"=m"(*(int64_t *)ptr)
151 :
"r"(ptr),
"r"(*(int64_t *)ptr),
"r"(
value),
"m"(*(int64_t *)ptr)
152 :
"ccr",
"g1",
"memory");
156 __asm__ __volatile__ (
157 "0:\t and\t %2, %3, %%g1\n"
158 "\t casx\t [%1], %2, %%g1\n"
159 "\t cmp\t %2, %%g1\n"
160 "\t bne,a,pn\t %%xcc, 0b\n"
162 :
"=m"(*(int64_t *)ptr)
163 :
"r"(ptr),
"r"(*(int64_t *)ptr),
"r"(
value),
"m"(*(int64_t *)ptr)
164 :
"ccr",
"g1",
"memory");
176 unsigned char result;
177 __asm__ __volatile__ (
178 "ldstub\t [%2], %0\n"
179 :
"=r"(result),
"=m"(flag)
180 :
"r"(&flag),
"m"(flag)
185 #define __TBB_USE_GENERIC_PART_WORD_CAS 1
186 #define __TBB_USE_GENERIC_PART_WORD_FETCH_ADD 1
187 #define __TBB_USE_GENERIC_FETCH_STORE 1
188 #define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE 1
189 #define __TBB_USE_GENERIC_RELAXED_LOAD_STORE 1
190 #define __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE 1
192 #define __TBB_AtomicOR(P,V) __TBB_machine_or(P,V)
193 #define __TBB_AtomicAND(P,V) __TBB_machine_and(P,V)
196 #define __TBB_Pause(V) __TBB_machine_pause(V)
197 #define __TBB_Log2(V) __TBB_machine_lg(V)
199 #define __TBB_TryLockByte(P) __TBB_machine_trylockbyte(P)
static void __TBB_machine_pause(int32_t delay)
static int32_t __TBB_machine_cmpswp4(volatile void *ptr, int32_t value, int32_t comparand)
static void __TBB_machine_and(volatile void *ptr, uint64_t value)
static int32_t __TBB_machine_fetchadd4(volatile void *ptr, int32_t addend)
static bool __TBB_machine_trylockbyte(unsigned char &flag)
static int64_t __TBB_machine_fetchadd8(volatile void *ptr, int64_t addend)
static int64_t __TBB_machine_cmpswp8(volatile void *ptr, int64_t value, int64_t comparand)
static void __TBB_machine_or(volatile void *ptr, uint64_t value)
static int64_t __TBB_machine_lg(uint64_t x)
#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 count
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