39 #if (KMP_ARCH_X86 || KMP_ARCH_X86_64)
45 __kmp_test_then_or32(
volatile kmp_int32 *p, kmp_int32 d )
47 kmp_int32 old_value, new_value;
49 old_value = TCR_4( *p );
50 new_value = old_value | d;
52 while ( ! __kmp_compare_and_store32 ( p, old_value, new_value ) )
55 old_value = TCR_4( *p );
56 new_value = old_value | d;
63 __kmp_test_then_and32(
volatile kmp_int32 *p, kmp_int32 d )
65 kmp_int32 old_value, new_value;
67 old_value = TCR_4( *p );
68 new_value = old_value & d;
70 while ( ! __kmp_compare_and_store32 ( p, old_value, new_value ) )
73 old_value = TCR_4( *p );
74 new_value = old_value & d;
81 __kmp_test_then_add64(
volatile kmp_int64 *p, kmp_int64 d )
83 kmp_int64 old_value, new_value;
85 old_value = TCR_8( *p );
86 new_value = old_value + d;
87 while ( ! __kmp_compare_and_store64 ( p, old_value, new_value ) )
90 old_value = TCR_8( *p );
91 new_value = old_value + d;
99 __kmp_test_then_or64(
volatile kmp_int64 *p, kmp_int64 d )
101 kmp_int64 old_value, new_value;
103 old_value = TCR_8( *p );
104 new_value = old_value | d;
105 while ( ! __kmp_compare_and_store64 ( p, old_value, new_value ) )
108 old_value = TCR_8( *p );
109 new_value = old_value | d;
116 __kmp_test_then_and64(
volatile kmp_int64 *p, kmp_int64 d )
118 kmp_int64 old_value, new_value;
120 old_value = TCR_8( *p );
121 new_value = old_value & d;
122 while ( ! __kmp_compare_and_store64 ( p, old_value, new_value ) )
125 old_value = TCR_8( *p );
126 new_value = old_value & d;