fix: add missing SPDX licensing tags
[urcu.git] / m4 / ae_cc_atomic_builtins.m4
CommitLineData
1c64a40d
MJ
1# SPDX-License-Identifier: GPL-2.0-or-later WITH LicenseRef-Autoconf-exception-macro
2# SPDX-FileCopyrightText: 2023 Michael Jeanson <mjeanson@efficios.com>
3#
3afcf5a0
OD
4# SYNOPSIS
5#
6# AE_CC_ATOMIC_BUILTINS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
7#
3afcf5a0
OD
8
9#serial 1
10
11AC_DEFUN([AE_CC_ATOMIC_BUILTINS], [
12AC_REQUIRE([AC_PROG_CC])
13AC_LANG_PUSH([C])
14
15AC_CACHE_CHECK(
16 [whether $CC supports atomic builtins],
17 [ae_cv_cc_atomic_builtins],
18 [
19 AC_LINK_IFELSE([
20 AC_LANG_PROGRAM([
21 int x, y;
22 ],[
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);
33 ])
34 ],[
35 ae_cv_cc_atomic_builtins=yes
36 ],[
37 ae_cv_cc_atomic_builtins=no
38 ])
39 ]
40)
41
42# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
43if test "x$ae_cv_cc_atomic_builtins" = "xyes"; then
44 $1
45 :
46else
47 $2
48 :
49fi
50
51AC_LANG_POP
52])dnl AE_CC_ATOMIC_BUILTINS
This page took 0.023486 seconds and 4 git commands to generate.