ksh/ksh93-aso.dif
2012-01-20 17:45:26 +00:00

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)