1 # SPDX-License-Identifier: GPL-2.0-or-later WITH LicenseRef-Autoconf-exception-macro
2 # SPDX-FileCopyrightText: 2023 Michael Jeanson <mjeanson@efficios.com>
6 # AE_CC_ATOMIC_BUILTINS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
11 AC_DEFUN([AE_CC_ATOMIC_BUILTINS], [
12 AC_REQUIRE([AC_PROG_CC])
16 [whether $CC supports atomic builtins],
17 [ae_cv_cc_atomic_builtins],
23 __atomic_store_n(&x, 0, __ATOMIC_RELAXED);
24 __atomic_load_n(&x, __ATOMIC_RELAXED);
25 y = __atomic_exchange_n(&x, 1, __ATOMIC_RELAXED);
26 __atomic_compare_exchange_n(&x, &y, 0, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
27 __atomic_add_fetch(&x, 1, __ATOMIC_RELAXED);
28 __atomic_sub_fetch(&x, 1, __ATOMIC_RELAXED);
29 __atomic_and_fetch(&x, 0x01, __ATOMIC_RELAXED);
30 __atomic_or_fetch(&x, 0x01, __ATOMIC_RELAXED);
31 __atomic_thread_fence(__ATOMIC_RELAXED);
32 __atomic_signal_fence(__ATOMIC_RELAXED);
35 ae_cv_cc_atomic_builtins=yes
37 ae_cv_cc_atomic_builtins=no
42 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
43 if test "x$ae_cv_cc_atomic_builtins" = "xyes"; then
52 ])dnl AE_CC_ATOMIC_BUILTINS