]> granicus.if.org Git - libatomic_ops/commit
Add asm-based char/short/int CAS implementation for gcc/x86[_64]
authorIvan Maidanski <ivmai@mail.ru>
Mon, 16 Jan 2017 22:48:48 +0000 (01:48 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 16 Jan 2017 22:48:48 +0000 (01:48 +0300)
commit7708b76c70c61c0c4aca40f75439ca98537972b2
treeb7b70620e6ea96d9c5339cbe44ec1f6ecfde94d1
parent8262e52fb577c634d8d93d76ec2ddecbdba1f995
Add asm-based char/short/int CAS implementation for gcc/x86[_64]

* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET]
(AO_char_and_full, AO_char_or_full, AO_char_xor_full, AO_short_and_full,
AO_short_or_full, AO_short_xor_full): Do not define if
AO_PREFER_GENERALIZED.
* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET]
(AO_char_fetch_compare_and_swap_full,
AO_short_fetch_compare_and_swap_full): Implement.
* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET
&& __x86_64__ && !__ILP32__] (AO_int_fetch_compare_and_swap_full):
Likewise.
* src/atomic_ops/sysdeps/gcc/x86.h [!AO_GCC_ATOMIC_TEST_AND_SET
&& __x86_64__ && !__ILP32__] (AO_int_fetch_and_add_full,
AO_int_and_full, AO_int_or_full, AO_int_xor_full): Do not define if
AO_PREFER_GENERALIZED.
src/atomic_ops/sysdeps/gcc/x86.h