]> granicus.if.org Git - libatomic_ops/commit
Code refactoring of Clang double-wide intrinsic workarounds (gcc/x86)
authorIvan Maidanski <ivmai@mail.ru>
Wed, 23 Nov 2016 10:55:00 +0000 (13:55 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Thu, 24 Nov 2016 11:19:04 +0000 (14:19 +0300)
commitf82a19e191b4515f04b3e57b9bab3e73e4c02ca7
tree9f4b80f5cf0810ffae8509d932c3bebf564e2e89
parent8e4213ff4329d5bcbbb76644084ccf3c76c3ef25
Code refactoring of Clang double-wide intrinsic workarounds (gcc/x86)
(fix commits 9803386f6a1b68eb6d4fd)

* src/atomic_ops/sysdeps/gcc/generic.h [AO_HAVE_DOUBLE_PTR_STORAGE
&& !AO_HAVE_double_store] (AO_double_store): Do not define if
AO_SKIPATOMIC_double_store.
* src/atomic_ops/sysdeps/gcc/generic.h [AO_HAVE_DOUBLE_PTR_STORAGE
&& !AO_HAVE_double_store_release] (AO_double_store_release): Do not
define if AO_SKIPATOMIC_double_load.
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& __clang__ && !__x86_64__ && !__APPLE_CC__ && !__CYGWIN__
&& !AO_PREFER_BUILTIN_ATOMICS] (AO_SKIPATOMIC_double_load,
AO_SKIPATOMIC_double_load_acquire, AO_SKIPATOMIC_double_store,
AO_SKIPATOMIC_double_store_release): Define internal macro (undefined
at the end of file).
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET
&& (__clang__ && !__x86_64__ && !__APPLE_CC__ && !__CYGWIN__
&& !AO_PREFER_BUILTIN_ATOMICS) || (__APPLE_CC__ && __x86_64__))]
(AO_SKIPATOMIC_double_compare_and_swap_ANY): Move definition here
(remove at other places in this file); undefine at the end of the file.
* src/atomic_ops/sysdeps/gcc/x86.h [AO_GCC_ATOMIC_TEST_AND_SET]: Check
AO_SKIPATOMIC_double_compare_and_swap_ANY instead of checking multiple
macros to detect whether a workaround for the CAS (and others)
double-wide operations is needed.
src/atomic_ops/sysdeps/gcc/generic.h
src/atomic_ops/sysdeps/gcc/x86.h