Overview
Comment: | atomic.h: Add support for __atomic_* builtins |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
64edae412838746d9f717dcb4379a2c4 |
User & Date: | js on 2016-07-31 23:41:28 |
Other Links: | manifest | tags |
Context
2016-07-31
| ||
23:51 | src/Makefile: Add missing includes check-in: 2c20beea16 user: js tags: trunk | |
23:41 | atomic.h: Add support for __atomic_* builtins check-in: 64edae4128 user: js tags: trunk | |
23:04 | Split atomic.h into multiple files check-in: 7115c55ef0 user: js tags: trunk | |
Changes
Modified configure.ac from [2f85c2e426] to [6c52721054].
︙ | |||
743 744 745 746 747 748 749 750 751 752 753 754 755 756 | 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 | + + + + + + + + + + + + + + + + + + + + + | #endif ], [ AC_MSG_RESULT(yes) atomic_ops="assembly implementation" ], [ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING(whether __atomic_* works) AC_TRY_LINK([ #include <stdbool.h> #include <stdint.h> ], [ int32_t i, j; if (__atomic_add_fetch(&i, 1, __ATOMIC_RELAXED)) j = __atomic_sub_fetch(&i, 1, __ATOMIC_RELAXED); while (!__atomic_compare_exchange_n(&i, &j, 1, false, __ATOMIC_RELAXED, __ATOMIC_RELAXED)); __atomic_thread_fence(__ATOMIC_SEQ_CST); ], [ AC_MSG_RESULT(yes) test x"$atomic_ops" = x"none" && \ atomic_ops="__atomic_* builtins" AC_DEFINE(OF_HAVE_ATOMIC_BUILTINS, 1, [Whether __atomic_* builtins are available]) ], [ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING(whether __sync_* works) AC_TRY_LINK([#include <stdint.h>], [ int32_t i, j; if (__sync_add_and_fetch(&i, 1)) j = __sync_sub_and_fetch(&i, 1); while (!__sync_bool_compare_and_swap(&i, 0, 1)); |
︙ |
Modified src/atomic.h from [f5eb774718] to [f4bb0c606a].
︙ | |||
24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | + + | #if !defined(OF_HAVE_THREADS) # import "atomic_no_threads.h" #elif defined(OF_X86_64_ASM) || defined(OF_X86_ASM) # import "atomic_x86.h" #elif defined(OF_POWERPC_ASM) # import "atomic_powerpc.h" #elif defined(OF_HAVE_ATOMIC_BUILTINS) # import "atomic_builtins.h" #elif defined(OF_HAVE_SYNC_BUILTINS) # import "atomic_sync_builtins.h" #elif defined(OF_HAVE_OSATOMIC) # import "atomic_osatomic.h" #else # error No atomic operations available! #endif |
Added src/atomic_builtins.h version [6f881ab3ae].