*
*/
+#if !defined(AO_GCC_HAVE_char_SYNC_CAS) || !defined(AO_PREFER_GENERALIZED)
+
AO_INLINE unsigned/**/char
AO_char_load(const volatile unsigned/**/char *addr)
{
# define AO_HAVE_char_store_release
#endif
+#endif /* !AO_GCC_HAVE_char_SYNC_CAS || !AO_PREFER_GENERALIZED */
+
#ifdef AO_GCC_HAVE_char_SYNC_CAS
AO_INLINE unsigned/**/char
*
*/
+#if !defined(AO_GCC_HAVE_short_SYNC_CAS) || !defined(AO_PREFER_GENERALIZED)
+
AO_INLINE unsigned/**/short
AO_short_load(const volatile unsigned/**/short *addr)
{
# define AO_HAVE_short_store_release
#endif
+#endif /* !AO_GCC_HAVE_short_SYNC_CAS || !AO_PREFER_GENERALIZED */
+
#ifdef AO_GCC_HAVE_short_SYNC_CAS
AO_INLINE unsigned/**/short
*
*/
+#if !defined(AO_GCC_HAVE_int_SYNC_CAS) || !defined(AO_PREFER_GENERALIZED)
+
AO_INLINE unsigned
AO_int_load(const volatile unsigned *addr)
{
# define AO_HAVE_int_store_release
#endif
+#endif /* !AO_GCC_HAVE_int_SYNC_CAS || !AO_PREFER_GENERALIZED */
+
#ifdef AO_GCC_HAVE_int_SYNC_CAS
AO_INLINE unsigned
*
*/
+#if !defined(AO_GCC_HAVE_SYNC_CAS) || !defined(AO_PREFER_GENERALIZED)
+
AO_INLINE AO_t
AO_load(const volatile AO_t *addr)
{
# define AO_HAVE_store_release
#endif
+#endif /* !AO_GCC_HAVE_SYNC_CAS || !AO_PREFER_GENERALIZED */
+
#ifdef AO_GCC_HAVE_SYNC_CAS
AO_INLINE AO_t
*
*/
+#if !defined(AO_GCC_HAVE_XSIZE_SYNC_CAS) || !defined(AO_PREFER_GENERALIZED)
+
AO_INLINE XCTYPE
AO_XSIZE_load(const volatile XCTYPE *addr)
{
# define AO_HAVE_XSIZE_store_release
#endif
+#endif /* !AO_GCC_HAVE_XSIZE_SYNC_CAS || !AO_PREFER_GENERALIZED */
+
#ifdef AO_GCC_HAVE_XSIZE_SYNC_CAS
AO_INLINE XCTYPE
#ifdef AO_HAVE_DOUBLE_PTR_STORAGE
+# if ((__SIZEOF_SIZE_T__ == 4 \
+ && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)) \
+ || (__SIZEOF_SIZE_T__ == 8 /* half of AO_double_t */ \
+ && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16))) \
+ && !defined(AO_SKIPATOMIC_double_compare_and_swap_ANY)
+# define AO_GCC_HAVE_double_SYNC_CAS
+# endif
+
+# if !defined(AO_GCC_HAVE_double_SYNC_CAS) || !defined(AO_PREFER_GENERALIZED)
+
# if !defined(AO_HAVE_double_load) && !defined(AO_SKIPATOMIC_double_load)
AO_INLINE AO_double_t
AO_double_load(const volatile AO_double_t *addr)
# define AO_HAVE_double_store_release
# endif
-# if ((__SIZEOF_SIZE_T__ == 4 \
- && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)) \
- || (__SIZEOF_SIZE_T__ == 8 /* half of AO_double_t */ \
- && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16))) \
- && !defined(AO_SKIPATOMIC_double_compare_and_swap_ANY)
-# define AO_GCC_HAVE_double_SYNC_CAS
-# endif
+#endif /* !AO_GCC_HAVE_double_SYNC_CAS || !AO_PREFER_GENERALIZED */
#endif /* AO_HAVE_DOUBLE_PTR_STORAGE */