119 lines
3.6 KiB
Plaintext
119 lines
3.6 KiB
Plaintext
--- src/lib/libast/features/aso
|
|
+++ src/lib/libast/features/aso 2012-01-18 11:31:07.856479000 +0000
|
|
@@ -1,12 +1,17 @@
|
|
# ast atomic scalar operations feature tests
|
|
|
|
if aso note{ gcc 4.1+ memory atomic operations model }end link{
|
|
+ #include <stdint.h>
|
|
int main()
|
|
{
|
|
- unsigned int i = 0;
|
|
- return __sync_fetch_and_add(&i,7);
|
|
+ uint8_t i = 0;
|
|
+ uint16_t j = 0;
|
|
+ uint32_t l = 0;
|
|
+ uint64_t m = 0;
|
|
+ return __sync_fetch_and_add(&i,7)+__sync_fetch_and_add(&j,7)+__sync_fetch_and_add(&l,7)+__sync_fetch_and_add(&m,7);
|
|
}
|
|
}end && {
|
|
+ #include <stdint.h>
|
|
#define _aso_cas8(p,o,n) __sync_val_compare_and_swap(p,o,n)
|
|
#define _aso_inc8(p) __sync_fetch_and_add(p,1)
|
|
#define _aso_dec8(p) __sync_fetch_and_sub(p,1)
|
|
@@ -26,6 +31,7 @@ if aso note{ gcc 4.1+ memory atomic oper
|
|
#endif
|
|
}
|
|
elif aso note{ <atomic.h> atomic_cas_64 }end link{
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
int main()
|
|
{
|
|
@@ -34,6 +40,7 @@ elif aso note{ <atomic.h> atomic_cas_64
|
|
return atomic_cas_64(&i, 0, 1) != 0 || atomic_add_32_nv(&j, 1) != 1;
|
|
}
|
|
}end && {
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
#define _aso_cas8(p,o,n) atomic_cas_8(p,o,n)
|
|
#define _aso_inc8(p) atomic_add_8_nv(p,1)
|
|
@@ -54,6 +61,7 @@ elif aso note{ <atomic.h> atomic_cas_64
|
|
#endif
|
|
}
|
|
elif aso note{ <atomic.h> atomic_cas_32 }end link{
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
int main()
|
|
{
|
|
@@ -61,6 +69,7 @@ elif aso note{ <atomic.h> atomic_cas_32
|
|
return atomic_cas_32(&i, 0, 1) != 0 || atomic_add_32_nv(&i, 1) != 1;
|
|
}
|
|
}end && {
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
#define _aso_cas8(p,o,n) atomic_cas_8(p,o,n)
|
|
#define _aso_inc8(p) atomic_add_8_nv(p,1)
|
|
@@ -74,6 +83,7 @@ elif aso note{ <atomic.h> atomic_cas_32
|
|
#define _aso_casptr(p,o,n) ((void*)atomic_cas_32((uint32_t*)p,(uint32_t)o,(uint32_t)n))
|
|
}
|
|
elif aso -latomic note{ <atomic.h> atomic_cas_64 with -latomic }end link{
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
int main()
|
|
{
|
|
@@ -82,6 +92,7 @@ elif aso -latomic note{ <atomic.h> atomi
|
|
return atomic_cas_64(&i, 0, 1) != 0 || atomic_add_32_nv(&j, 1) != 1;
|
|
}
|
|
}end && {
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
#define _REQ_atomic
|
|
#define _aso_cas8(p,o,n) atomic_cas_8(p,o,n)
|
|
@@ -103,6 +114,7 @@ elif aso -latomic note{ <atomic.h> atomi
|
|
#endif
|
|
}
|
|
elif aso note{ <atomic.h> atomic_cas_32 with -latomic }end link{
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
int main()
|
|
{
|
|
@@ -110,6 +122,7 @@ elif aso note{ <atomic.h> atomic_cas_32
|
|
return atomic_cas_32(&i, 0, 1) != 0 || atomic_add_32_nv(&i, 1) != 1;
|
|
}
|
|
}end && {
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
#define _REQ_atomic
|
|
#define _aso_cas8(p,o,n) atomic_cas_8(p,o,n)
|
|
@@ -124,6 +137,7 @@ elif aso note{ <atomic.h> atomic_cas_32
|
|
#define _aso_casptr(p,o,n) ((void*)atomic_cas_32((uint32_t*)p,(uint32_t)o,(uint32_t)n))
|
|
}
|
|
elif aso note{ <atomic.h> cas64 }end link{
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
int main()
|
|
{
|
|
@@ -132,6 +146,7 @@ elif aso note{ <atomic.h> cas64 }end lin
|
|
return cas64(&i, 0, 1) != 0 || atomic_add_32_nv(&j, 1) != 1;
|
|
}
|
|
}end && {
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
#define _aso_cas8(p,o,n) cas8(p,o,n)
|
|
#define _aso_inc8(p) atomic_add_8_nv(p,1)
|
|
@@ -152,6 +167,7 @@ elif aso note{ <atomic.h> cas64 }end lin
|
|
#endif
|
|
}
|
|
elif aso note{ <atomic.h> cas32 }end link{
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
int main()
|
|
{
|
|
@@ -159,6 +175,7 @@ elif aso note{ <atomic.h> cas32 }end lin
|
|
return cas32(&i, 0, 1) != 0 || atomic_add_32_nv(&i, 1) != 1;
|
|
}
|
|
}end && {
|
|
+ #include <stdint.h>
|
|
#include <atomic.h>
|
|
#define _aso_cas8(p,o,n) cas8(p,o,n)
|
|
#define _aso_inc8(p) atomic_add_8_nv(p,1)
|