37 #if (KMP_ARCH_X86 || KMP_ARCH_X86_64)
43 __kmp_test_then_or8(
volatile kmp_int8 *p, kmp_int8 d )
45 kmp_int8 old_value, new_value;
47 old_value = TCR_1( *p );
48 new_value = old_value | d;
50 while ( ! __kmp_compare_and_store8 ( p, old_value, new_value ) )
53 old_value = TCR_1( *p );
54 new_value = old_value | d;
60 __kmp_test_then_and8(
volatile kmp_int8 *p, kmp_int8 d )
62 kmp_int8 old_value, new_value;
64 old_value = TCR_1( *p );
65 new_value = old_value & d;
67 while ( ! __kmp_compare_and_store8 ( p, old_value, new_value ) )
70 old_value = TCR_1( *p );
71 new_value = old_value & d;
77 __kmp_test_then_or32(
volatile kmp_int32 *p, kmp_int32 d )
79 kmp_int32 old_value, new_value;
81 old_value = TCR_4( *p );
82 new_value = old_value | d;
84 while ( ! __kmp_compare_and_store32 ( p, old_value, new_value ) )
87 old_value = TCR_4( *p );
88 new_value = old_value | d;
94 __kmp_test_then_and32(
volatile kmp_int32 *p, kmp_int32 d )
96 kmp_int32 old_value, new_value;
98 old_value = TCR_4( *p );
99 new_value = old_value & d;
101 while ( ! __kmp_compare_and_store32 ( p, old_value, new_value ) )
104 old_value = TCR_4( *p );
105 new_value = old_value & d;
111 __kmp_test_then_add8(
volatile kmp_int8 *p, kmp_int8 d )
113 kmp_int64 old_value, new_value;
115 old_value = TCR_1( *p );
116 new_value = old_value + d;
117 while ( ! __kmp_compare_and_store8 ( p, old_value, new_value ) )
120 old_value = TCR_1( *p );
121 new_value = old_value + d;
128 __kmp_test_then_add64(
volatile kmp_int64 *p, kmp_int64 d )
130 kmp_int64 old_value, new_value;
132 old_value = TCR_8( *p );
133 new_value = old_value + d;
134 while ( ! __kmp_compare_and_store64 ( p, old_value, new_value ) )
137 old_value = TCR_8( *p );
138 new_value = old_value + d;
145 __kmp_test_then_or64(
volatile kmp_int64 *p, kmp_int64 d )
147 kmp_int64 old_value, new_value;
149 old_value = TCR_8( *p );
150 new_value = old_value | d;
151 while ( ! __kmp_compare_and_store64 ( p, old_value, new_value ) )
154 old_value = TCR_8( *p );
155 new_value = old_value | d;
162 __kmp_test_then_and64(
volatile kmp_int64 *p, kmp_int64 d )
164 kmp_int64 old_value, new_value;
166 old_value = TCR_8( *p );
167 new_value = old_value & d;
168 while ( ! __kmp_compare_and_store64 ( p, old_value, new_value ) )
171 old_value = TCR_8( *p );
172 new_value = old_value & d;