Index: src/prelude/Makefile.am
===================================================================
--- src/prelude/Makefile.am	(revision b91e8c122c0ea2e20c8b5f1316b4965f390b042d)
+++ src/prelude/Makefile.am	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
@@ -37,7 +37,7 @@
 # create forward declarations for gcc builtins
 gcc-builtins.cf : gcc-builtins.c prototypes.sed
-	${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -f prototypes.sed > $@
+	${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -r -f prototypes.sed > $@
 
-gcc-builtins.c : builtins.def prototypes.awk
+gcc-builtins.c : builtins.def prototypes.awk sync-builtins.cf
 	${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@
 
Index: src/prelude/Makefile.in
===================================================================
--- src/prelude/Makefile.in	(revision b91e8c122c0ea2e20c8b5f1316b4965f390b042d)
+++ src/prelude/Makefile.in	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
@@ -506,7 +506,7 @@
 # create forward declarations for gcc builtins
 gcc-builtins.cf : gcc-builtins.c prototypes.sed
-	${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -f prototypes.sed > $@
-
-gcc-builtins.c : builtins.def prototypes.awk
+	${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -r -f prototypes.sed > $@
+
+gcc-builtins.c : builtins.def prototypes.awk sync-builtins.cf
 	${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@
 
Index: src/prelude/builtins.def
===================================================================
--- src/prelude/builtins.def	(revision b91e8c122c0ea2e20c8b5f1316b4965f390b042d)
+++ src/prelude/builtins.def	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
@@ -190,5 +190,5 @@
 
 /* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
-   by the compiler but a few are implemented in libcilkrts.  */ 
+   by the compiler but a few are implemented in libcilkrts.  */
 #undef DEF_CILK_BUILTIN_STUB
 #define DEF_CILK_BUILTIN_STUB(ENUM, NAME) \
@@ -204,5 +204,5 @@
 
 /* Builtin used by the implementation of libsanitizer. These
-   functions are mapped to the actual implementation of the 
+   functions are mapped to the actual implementation of the
    libtsan library. */
 #undef DEF_SANITIZER_BUILTIN
@@ -217,5 +217,5 @@
 #define DEF_CILKPLUS_BUILTIN(ENUM, NAME, TYPE, ATTRS)  \
   DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \
-  	       false, false, false, ATTRS, false, flag_cilkplus) 
+  	       false, false, false, ATTRS, false, flag_cilkplus)
 
 /* Builtin used by the implementation of Pointer Bounds Checker.  */
@@ -927,8 +927,8 @@
 DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST)
 
+#if 0 //Ifdefed out because we hard-coded the proper overloadings of the atomic built-ins
 /* Synchronization Primitives.  */
 #include "sync-builtins.def"
 
-#if 0
 /* Offloading and Multi Processing builtins.  */
 #include "omp-builtins.def"
Index: src/prelude/prelude.cf
===================================================================
--- src/prelude/prelude.cf	(revision b91e8c122c0ea2e20c8b5f1316b4965f390b042d)
+++ src/prelude/prelude.cf	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
@@ -458,4 +458,5 @@
 signed long long int	?=?( signed long long int &, signed long long int ),	?=?( volatile signed long long int &, signed long long int );
 unsigned long long int	?=?( unsigned long long int &, unsigned long long int ), ?=?( volatile unsigned long long int &, unsigned long long int );
+__int128	?=?( __int128 &, __int128 ),	?=?( volatile __int128 &, __int128 );
 zero_t			?=?( zero_t &, zero_t );
 one_t			?=?( one_t &, one_t );
Index: src/prelude/prototypes.awk
===================================================================
--- src/prelude/prototypes.awk	(revision b91e8c122c0ea2e20c8b5f1316b4965f390b042d)
+++ src/prelude/prototypes.awk	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
@@ -5,5 +5,5 @@
 # file "LICENCE" distributed with Cforall.
 #
-# prototypes.awk -- 
+# prototypes.awk --
 #
 # Author           : Peter A. Buhr
@@ -12,5 +12,5 @@
 # Last Modified On : Tue Jul  5 14:32:52 2016
 # Update Count     : 32
-# 
+#
 
 # http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def
@@ -83,5 +83,5 @@
 } # BEGIN
 
-/BT_FN/ { 
+/BT_FN/ {
     for (i = 1; i <= NF; i++) {
       if( match($i, "BT_FN") != 0 ) {
@@ -116,5 +116,5 @@
 
       # generate function return type as macro
-      for ( t = 0; t < N; t += 1 ) {					# find longest match 
+      for ( t = 0; t < N; t += 1 ) {					# find longest match
         type = types[t];
         if ( index( prototype, type ) == 1 ) {		# found match
@@ -150,4 +150,5 @@
 	# extras
 	printf( "\n#include \"builtins.def\"\n\n" );
+	printf( "\n#include \"sync-builtins.cf\"\n\n" );
 	printf( "extern const char *__PRETTY_FUNCTION__;\n" );
 } # END
Index: src/prelude/prototypes.sed
===================================================================
--- src/prelude/prototypes.sed	(revision b91e8c122c0ea2e20c8b5f1316b4965f390b042d)
+++ src/prelude/prototypes.sed	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
@@ -2,5 +2,21 @@
 /targetm/s/.*//				#Remove targetm declarations
 /__Unsupported/s/.*//			#Remove Unsupported types declarations
-s/void (const char \*)0();//		#Remove void (const char \*)0();
+s/void \(const char \*\)0\(\);//	#Remove void (const char \*)0();
 s/\"//g 					#Remove extraenous quotes in declarations
-/__builtin_/s/_ /_/g			#Remove extraenous spaces in declarations 
+/__builtin_/s/_ /_/g			#Remove extraenous spaces in declarations
+
+#Fix gcc overloading
+# various sed rules for the gcc sync builtins which are overloaded
+# kept here because they generate an acceptable approximate of the correct prototypes
+
+#/__sync_/s/_[0-9][0-9]*\(.*\)/\(\);/g	#hack since it will accept any parameters
+#/__atomic_/s/_[0-9][0-9]*\(.*\)/\(\);/g	#hack since it will accept any parameters
+
+#/_16/s/void \*/__int128 \*/g
+#/_8/s/void \*/long long int \*/g
+#/_4/s/void \*/int \*/g
+#/_2/s/void \*/short \*/g
+#/_1/s/void \*/char \*/g
+
+#s/([a-zA-Z0-9_ ]+)\s+__sync([a-z_]+)_([0-9]+)\((.*)\);/\1 __sync\2\(\4\,...); \1 __sync\2_\3\(\4\,...);/
+#s/([a-zA-Z0-9_ ]+)\s+__atomic([a-z_]+)_([0-9]+)\((.*)\);/\1 __atomic\2\(\4\); \1 __atomic\2_\3\(\4\);/
Index: src/prelude/sync-builtins.cf
===================================================================
--- src/prelude/sync-builtins.cf	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
+++ src/prelude/sync-builtins.cf	(revision 58e822a10f30dad8a7f188f7c7fb9c07c071994c)
@@ -0,0 +1,399 @@
+char __sync_fetch_and_add(volatile char *, char,...);
+char __sync_fetch_and_add_1(volatile char *, char,...);
+short __sync_fetch_and_add(volatile short *, short,...);
+short __sync_fetch_and_add_2(volatile short *, short,...);
+int __sync_fetch_and_add(volatile int *, int,...);
+int __sync_fetch_and_add_4(volatile int *, int,...);
+long long int __sync_fetch_and_add(volatile long long int *, long long int,...);
+long long int __sync_fetch_and_add_8(volatile long long int *, long long int,...);
+__int128 __sync_fetch_and_add(volatile __int128 *, __int128,...);
+__int128 __sync_fetch_and_add_16(volatile __int128 *, __int128,...);
+
+char __sync_fetch_and_sub(volatile char *, char,...);
+char __sync_fetch_and_sub_1(volatile char *, char,...);
+short __sync_fetch_and_sub(volatile short *, short,...);
+short __sync_fetch_and_sub_2(volatile short *, short,...);
+int __sync_fetch_and_sub(volatile int *, int,...);
+int __sync_fetch_and_sub_4(volatile int *, int,...);
+long long int __sync_fetch_and_sub(volatile long long int *, long long int,...);
+long long int __sync_fetch_and_sub_8(volatile long long int *, long long int,...);
+__int128 __sync_fetch_and_sub(volatile __int128 *, __int128,...);
+__int128 __sync_fetch_and_sub_16(volatile __int128 *, __int128,...);
+
+char __sync_fetch_and_or(volatile char *, char,...);
+char __sync_fetch_and_or_1(volatile char *, char,...);
+short __sync_fetch_and_or(volatile short *, short,...);
+short __sync_fetch_and_or_2(volatile short *, short,...);
+int __sync_fetch_and_or(volatile int *, int,...);
+int __sync_fetch_and_or_4(volatile int *, int,...);
+long long int __sync_fetch_and_or(volatile long long int *, long long int,...);
+long long int __sync_fetch_and_or_8(volatile long long int *, long long int,...);
+__int128 __sync_fetch_and_or(volatile __int128 *, __int128,...);
+__int128 __sync_fetch_and_or_16(volatile __int128 *, __int128,...);
+
+char __sync_fetch_and_and(volatile char *, char,...);
+char __sync_fetch_and_and_1(volatile char *, char,...);
+short __sync_fetch_and_and(volatile short *, short,...);
+short __sync_fetch_and_and_2(volatile short *, short,...);
+int __sync_fetch_and_and(volatile int *, int,...);
+int __sync_fetch_and_and_4(volatile int *, int,...);
+long long int __sync_fetch_and_and(volatile long long int *, long long int,...);
+long long int __sync_fetch_and_and_8(volatile long long int *, long long int,...);
+__int128 __sync_fetch_and_and(volatile __int128 *, __int128,...);
+__int128 __sync_fetch_and_and_16(volatile __int128 *, __int128,...);
+
+char __sync_fetch_and_xor(volatile char *, char,...);
+char __sync_fetch_and_xor_1(volatile char *, char,...);
+short __sync_fetch_and_xor(volatile short *, short,...);
+short __sync_fetch_and_xor_2(volatile short *, short,...);
+int __sync_fetch_and_xor(volatile int *, int,...);
+int __sync_fetch_and_xor_4(volatile int *, int,...);
+long long int __sync_fetch_and_xor(volatile long long int *, long long int,...);
+long long int __sync_fetch_and_xor_8(volatile long long int *, long long int,...);
+__int128 __sync_fetch_and_xor(volatile __int128 *, __int128,...);
+__int128 __sync_fetch_and_xor_16(volatile __int128 *, __int128,...);
+
+char __sync_fetch_and_nand(volatile char *, char,...);
+char __sync_fetch_and_nand_1(volatile char *, char,...);
+short __sync_fetch_and_nand(volatile short *, short,...);
+short __sync_fetch_and_nand_2(volatile short *, short,...);
+int __sync_fetch_and_nand(volatile int *, int,...);
+int __sync_fetch_and_nand_4(volatile int *, int,...);
+long long int __sync_fetch_and_nand(volatile long long int *, long long int,...);
+long long int __sync_fetch_and_nand_8(volatile long long int *, long long int,...);
+__int128 __sync_fetch_and_nand(volatile __int128 *, __int128,...);
+__int128 __sync_fetch_and_nand_16(volatile __int128 *, __int128,...);
+
+char __sync_add_and_fetch(volatile char *, char,...);
+char __sync_add_and_fetch_1(volatile char *, char,...);
+short __sync_add_and_fetch(volatile short *, short,...);
+short __sync_add_and_fetch_2(volatile short *, short,...);
+int __sync_add_and_fetch(volatile int *, int,...);
+int __sync_add_and_fetch_4(volatile int *, int,...);
+long long int __sync_add_and_fetch(volatile long long int *, long long int,...);
+long long int __sync_add_and_fetch_8(volatile long long int *, long long int,...);
+__int128 __sync_add_and_fetch(volatile __int128 *, __int128,...);
+__int128 __sync_add_and_fetch_16(volatile __int128 *, __int128,...);
+
+char __sync_sub_and_fetch(volatile char *, char,...);
+char __sync_sub_and_fetch_1(volatile char *, char,...);
+short __sync_sub_and_fetch(volatile short *, short,...);
+short __sync_sub_and_fetch_2(volatile short *, short,...);
+int __sync_sub_and_fetch(volatile int *, int,...);
+int __sync_sub_and_fetch_4(volatile int *, int,...);
+long long int __sync_sub_and_fetch(volatile long long int *, long long int,...);
+long long int __sync_sub_and_fetch_8(volatile long long int *, long long int,...);
+__int128 __sync_sub_and_fetch(volatile __int128 *, __int128,...);
+__int128 __sync_sub_and_fetch_16(volatile __int128 *, __int128,...);
+
+char __sync_or_and_fetch(volatile char *, char,...);
+char __sync_or_and_fetch_1(volatile char *, char,...);
+short __sync_or_and_fetch(volatile short *, short,...);
+short __sync_or_and_fetch_2(volatile short *, short,...);
+int __sync_or_and_fetch(volatile int *, int,...);
+int __sync_or_and_fetch_4(volatile int *, int,...);
+long long int __sync_or_and_fetch(volatile long long int *, long long int,...);
+long long int __sync_or_and_fetch_8(volatile long long int *, long long int,...);
+__int128 __sync_or_and_fetch(volatile __int128 *, __int128,...);
+__int128 __sync_or_and_fetch_16(volatile __int128 *, __int128,...);
+
+char __sync_and_and_fetch(volatile char *, char,...);
+char __sync_and_and_fetch_1(volatile char *, char,...);
+short __sync_and_and_fetch(volatile short *, short,...);
+short __sync_and_and_fetch_2(volatile short *, short,...);
+int __sync_and_and_fetch(volatile int *, int,...);
+int __sync_and_and_fetch_4(volatile int *, int,...);
+long long int __sync_and_and_fetch(volatile long long int *, long long int,...);
+long long int __sync_and_and_fetch_8(volatile long long int *, long long int,...);
+__int128 __sync_and_and_fetch(volatile __int128 *, __int128,...);
+__int128 __sync_and_and_fetch_16(volatile __int128 *, __int128,...);
+
+char __sync_xor_and_fetch(volatile char *, char,...);
+char __sync_xor_and_fetch_1(volatile char *, char,...);
+short __sync_xor_and_fetch(volatile short *, short,...);
+short __sync_xor_and_fetch_2(volatile short *, short,...);
+int __sync_xor_and_fetch(volatile int *, int,...);
+int __sync_xor_and_fetch_4(volatile int *, int,...);
+long long int __sync_xor_and_fetch(volatile long long int *, long long int,...);
+long long int __sync_xor_and_fetch_8(volatile long long int *, long long int,...);
+__int128 __sync_xor_and_fetch(volatile __int128 *, __int128,...);
+__int128 __sync_xor_and_fetch_16(volatile __int128 *, __int128,...);
+
+char __sync_nand_and_fetch(volatile char *, char,...);
+char __sync_nand_and_fetch_1(volatile char *, char,...);
+short __sync_nand_and_fetch(volatile short *, short,...);
+short __sync_nand_and_fetch_2(volatile short *, short,...);
+int __sync_nand_and_fetch(volatile int *, int,...);
+int __sync_nand_and_fetch_4(volatile int *, int,...);
+long long int __sync_nand_and_fetch(volatile long long int *, long long int,...);
+long long int __sync_nand_and_fetch_8(volatile long long int *, long long int,...);
+__int128 __sync_nand_and_fetch(volatile __int128 *, __int128,...);
+__int128 __sync_nand_and_fetch_16(volatile __int128 *, __int128,...);
+
+_Bool __sync_bool_compare_and_swap(volatile char *, char, char,...);
+_Bool __sync_bool_compare_and_swap_1(volatile char *, char, char,...);
+_Bool __sync_bool_compare_and_swap(volatile short *, short, short,...);
+_Bool __sync_bool_compare_and_swap_2(volatile short *, short, short,...);
+_Bool __sync_bool_compare_and_swap(volatile int *, int, int,...);
+_Bool __sync_bool_compare_and_swap_4(volatile int *, int, int,...);
+_Bool __sync_bool_compare_and_swap(volatile long long int *, long long int, long long int,...);
+_Bool __sync_bool_compare_and_swap_8(volatile long long int *, long long int, long long int,...);
+_Bool __sync_bool_compare_and_swap(volatile __int128 *, __int128, __int128,...);
+_Bool __sync_bool_compare_and_swap_16(volatile __int128 *, __int128, __int128,...);
+
+char __sync_val_compare_and_swap(volatile char *, char, char,...);
+char __sync_val_compare_and_swap_1(volatile char *, char, char,...);
+short __sync_val_compare_and_swap(volatile short *, short, short,...);
+short __sync_val_compare_and_swap_2(volatile short *, short, short,...);
+int __sync_val_compare_and_swap(volatile int *, int, int,...);
+int __sync_val_compare_and_swap_4(volatile int *, int, int,...);
+long long int __sync_val_compare_and_swap(volatile long long int *, long long int, long long int,...);
+long long int __sync_val_compare_and_swap_8(volatile long long int *, long long int, long long int,...);
+__int128 __sync_val_compare_and_swap(volatile __int128 *, __int128, __int128,...);
+__int128 __sync_val_compare_and_swap_16(volatile __int128 *, __int128, __int128,...);
+
+char __sync_lock_test_and_set(volatile char *, char,...);
+char __sync_lock_test_and_set_1(volatile char *, char,...);
+short __sync_lock_test_and_set(volatile short *, short,...);
+short __sync_lock_test_and_set_2(volatile short *, short,...);
+int __sync_lock_test_and_set(volatile int *, int,...);
+int __sync_lock_test_and_set_4(volatile int *, int,...);
+long long int __sync_lock_test_and_set(volatile long long int *, long long int,...);
+long long int __sync_lock_test_and_set_8(volatile long long int *, long long int,...);
+__int128 __sync_lock_test_and_set(volatile __int128 *, __int128,...);
+__int128 __sync_lock_test_and_set_16(volatile __int128 *, __int128,...);
+
+void __sync_lock_release(volatile char *,...);
+void __sync_lock_release_1(volatile char *,...);
+void __sync_lock_release(volatile short *,...);
+void __sync_lock_release_2(volatile short *,...);
+void __sync_lock_release(volatile int *,...);
+void __sync_lock_release_4(volatile int *,...);
+void __sync_lock_release(volatile long long int *,...);
+void __sync_lock_release_8(volatile long long int *,...);
+void __sync_lock_release(volatile __int128 *,...);
+void __sync_lock_release_16(volatile __int128 *,...);
+
+void __sync_synchronize();
+
+
+
+
+_Bool __atomic_test_and_set(volatile _Bool *, int);
+_Bool __atomic_test_and_set(volatile char *, int);
+_Bool __atomic_test_and_set(volatile short *, int);
+_Bool __atomic_test_and_set(volatile int *, int);
+_Bool __atomic_test_and_set(volatile long long int *, int);
+_Bool __atomic_test_and_set(volatile __int128 *, int);
+void __atomic_clear(volatile _Bool *, int);
+void __atomic_clear(volatile char *, int);
+void __atomic_clear(volatile short *, int);
+void __atomic_clear(volatile int *, int);
+void __atomic_clear(volatile long long int *, int);
+void __atomic_clear(volatile __int128 *, int);
+
+char __atomic_exchange_n(volatile char *, volatile char *, int);
+char __atomic_exchange_1(volatile char *, char, int);
+void __atomic_exchange(volatile char *, volatile char *, volatile char *, int);
+short __atomic_exchange_n(volatile short *, volatile short *, int);
+short __atomic_exchange_2(volatile short *, short, int);
+void __atomic_exchange(volatile short *, volatile short *, volatile short *, int);
+int __atomic_exchange_n(volatile int *, volatile int *, int);
+int __atomic_exchange_4(volatile int *, int, int);
+void __atomic_exchange(volatile int *, volatile int *, volatile int *, int);
+long long int __atomic_exchange_n(volatile long long int *, volatile long long int *, int);
+long long int __atomic_exchange_8(volatile long long int *, long long int, int);
+void __atomic_exchange(volatile long long int *, volatile long long int *, volatile long long int *, int);
+__int128 __atomic_exchange_n(volatile __int128 *, volatile __int128 *, int);
+__int128 __atomic_exchange_16(volatile __int128 *, __int128, int);
+void __atomic_exchange(volatile __int128 *, volatile __int128 *, volatile __int128 *, int);
+
+char __atomic_load_n(const volatile char *, int);
+char __atomic_load_1(const volatile char *, int);
+void __atomic_load(const volatile char *, volatile char *, int);
+short __atomic_load_n(const volatile short *, int);
+short __atomic_load_2(const volatile short *, int);
+void __atomic_load(const volatile short *, volatile short *, int);
+int __atomic_load_n(const volatile int *, int);
+int __atomic_load_4(const volatile int *, int);
+void __atomic_load(const volatile int *, volatile int *, int);
+long long int __atomic_load_n(const volatile long long int *, int);
+long long int __atomic_load_8(const volatile long long int *, int);
+void __atomic_load(const volatile long long int *, volatile long long int *, int);
+__int128 __atomic_load_n(const volatile __int128 *, int);
+__int128 __atomic_load_16(const volatile __int128 *, int);
+void __atomic_load(const volatile __int128 *, volatile __int128 *, int);
+
+_Bool __atomic_compare_exchange_n(volatile char *, char *, char, _Bool, int, int);
+_Bool __atomic_compare_exchange_1(volatile char *, char *, char, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile char *, char *, char *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile short *, short *, short, _Bool, int, int);
+_Bool __atomic_compare_exchange_2(volatile short *, short *, short, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile short *, short *, short *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile int *, int *, int, _Bool, int, int);
+_Bool __atomic_compare_exchange_4(volatile int *, int *, int, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile int *, int *, int *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n(volatile long long int *, long long int *, long long int, _Bool, int, int);
+_Bool __atomic_compare_exchange_8(volatile long long int *, long long int *, long long int, _Bool, int, int);
+_Bool __atomic_compare_exchange  (volatile long long int *, long long int *, long long int *, _Bool, int, int);
+_Bool __atomic_compare_exchange_n (volatile __int128 *, __int128 *, __int128, _Bool, int, int);
+_Bool __atomic_compare_exchange_16(volatile __int128 *, __int128 *, __int128, _Bool, int, int);
+_Bool __atomic_compare_exchange   (volatile __int128 *, __int128 *, __int128 *, _Bool, int, int);
+
+void __atomic_store_n(volatile _Bool *, _Bool, int);
+void __atomic_store_1(volatile _Bool *, _Bool, int);
+void __atomic_store(volatile _Bool *, _Bool *, int);
+void __atomic_store_n(volatile char *, char, int);
+void __atomic_store_1(volatile char *, char, int);
+void __atomic_store(volatile char *, char *, int);
+void __atomic_store_n(volatile short *, short, int);
+void __atomic_store_2(volatile short *, short, int);
+void __atomic_store(volatile short *, short *, int);
+void __atomic_store_n(volatile int *, int, int);
+void __atomic_store_4(volatile int *, int, int);
+void __atomic_store(volatile int *, int *, int);
+void __atomic_store_n(volatile long long int *, long long int, int);
+void __atomic_store_8(volatile long long int *, long long int, int);
+void __atomic_store(volatile long long int *, long long int *, int);
+void __atomic_store_n(volatile __int128 *, __int128, int);
+void __atomic_store_16(volatile __int128 *, __int128, int);
+void __atomic_store(volatile __int128 *, __int128 *, int);
+
+char __atomic_add_fetch  (volatile char *, char, int);
+char __atomic_add_fetch_1(volatile char *, char, int);
+short __atomic_add_fetch  (volatile short *, short, int);
+short __atomic_add_fetch_2(volatile short *, short, int);
+int __atomic_add_fetch  (volatile int *, int, int);
+int __atomic_add_fetch_4(volatile int *, int, int);
+long long int __atomic_add_fetch  (volatile long long int *, long long int, int);
+long long int __atomic_add_fetch_8(volatile long long int *, long long int, int);
+__int128 __atomic_add_fetch   (volatile __int128 *, __int128, int);
+__int128 __atomic_add_fetch_16(volatile __int128 *, __int128, int);
+
+char __atomic_sub_fetch  (volatile char *, char, int);
+char __atomic_sub_fetch_1(volatile char *, char, int);
+short __atomic_sub_fetch  (volatile short *, short, int);
+short __atomic_sub_fetch_2(volatile short *, short, int);
+int __atomic_sub_fetch  (volatile int *, int, int);
+int __atomic_sub_fetch_4(volatile int *, int, int);
+long long int __atomic_sub_fetch  (volatile long long int *, long long int, int);
+long long int __atomic_sub_fetch_8(volatile long long int *, long long int, int);
+__int128 __atomic_sub_fetch   (volatile __int128 *, __int128, int);
+__int128 __atomic_sub_fetch_16(volatile __int128 *, __int128, int);
+
+char __atomic_and_fetch  (volatile char *, char, int);
+char __atomic_and_fetch_1(volatile char *, char, int);
+short __atomic_and_fetch  (volatile short *, short, int);
+short __atomic_and_fetch_2(volatile short *, short, int);
+int __atomic_and_fetch  (volatile int *, int, int);
+int __atomic_and_fetch_4(volatile int *, int, int);
+long long int __atomic_and_fetch  (volatile long long int *, long long int, int);
+long long int __atomic_and_fetch_8(volatile long long int *, long long int, int);
+__int128 __atomic_and_fetch   (volatile __int128 *, __int128, int);
+__int128 __atomic_and_fetch_16(volatile __int128 *, __int128, int);
+
+char __atomic_nand_fetch  (volatile char *, char, int);
+char __atomic_nand_fetch_1(volatile char *, char, int);
+short __atomic_nand_fetch  (volatile short *, short, int);
+short __atomic_nand_fetch_2(volatile short *, short, int);
+int __atomic_nand_fetch  (volatile int *, int, int);
+int __atomic_nand_fetch_4(volatile int *, int, int);
+long long int __atomic_nand_fetch  (volatile long long int *, long long int, int);
+long long int __atomic_nand_fetch_8(volatile long long int *, long long int, int);
+__int128 __atomic_nand_fetch   (volatile __int128 *, __int128, int);
+__int128 __atomic_nand_fetch_16(volatile __int128 *, __int128, int);
+
+char __atomic_xor_fetch  (volatile char *, char, int);
+char __atomic_xor_fetch_1(volatile char *, char, int);
+short __atomic_xor_fetch  (volatile short *, short, int);
+short __atomic_xor_fetch_2(volatile short *, short, int);
+int __atomic_xor_fetch  (volatile int *, int, int);
+int __atomic_xor_fetch_4(volatile int *, int, int);
+long long int __atomic_xor_fetch  (volatile long long int *, long long int, int);
+long long int __atomic_xor_fetch_8(volatile long long int *, long long int, int);
+__int128 __atomic_xor_fetch   (volatile __int128 *, __int128, int);
+__int128 __atomic_xor_fetch_16(volatile __int128 *, __int128, int);
+
+char __atomic_or_fetch  (volatile char *, char, int);
+char __atomic_or_fetch_1(volatile char *, char, int);
+short __atomic_or_fetch  (volatile short *, short, int);
+short __atomic_or_fetch_2(volatile short *, short, int);
+int __atomic_or_fetch  (volatile int *, int, int);
+int __atomic_or_fetch_4(volatile int *, int, int);
+long long int __atomic_or_fetch  (volatile long long int *, long long int, int);
+long long int __atomic_or_fetch_8(volatile long long int *, long long int, int);
+__int128 __atomic_or_fetch   (volatile __int128 *, __int128, int);
+__int128 __atomic_or_fetch_16(volatile __int128 *, __int128, int);
+
+char __atomic_fetch_add  (volatile char *, char, int);
+char __atomic_fetch_add_1(volatile char *, char, int);
+short __atomic_fetch_add  (volatile short *, short, int);
+short __atomic_fetch_add_2(volatile short *, short, int);
+int __atomic_fetch_add  (volatile int *, int, int);
+int __atomic_fetch_add_4(volatile int *, int, int);
+long long int __atomic_fetch_add  (volatile long long int *, long long int, int);
+long long int __atomic_fetch_add_8(volatile long long int *, long long int, int);
+__int128 __atomic_fetch_add   (volatile __int128 *, __int128, int);
+__int128 __atomic_fetch_add_16(volatile __int128 *, __int128, int);
+
+char __atomic_fetch_sub  (volatile char *, char, int);
+char __atomic_fetch_sub_1(volatile char *, char, int);
+short __atomic_fetch_sub  (volatile short *, short, int);
+short __atomic_fetch_sub_2(volatile short *, short, int);
+int __atomic_fetch_sub  (volatile int *, int, int);
+int __atomic_fetch_sub_4(volatile int *, int, int);
+long long int __atomic_fetch_sub  (volatile long long int *, long long int, int);
+long long int __atomic_fetch_sub_8(volatile long long int *, long long int, int);
+__int128 __atomic_fetch_sub   (volatile __int128 *, __int128, int);
+__int128 __atomic_fetch_sub_16(volatile __int128 *, __int128, int);
+
+char __atomic_fetch_and  (volatile char *, char, int);
+char __atomic_fetch_and_1(volatile char *, char, int);
+short __atomic_fetch_and  (volatile short *, short, int);
+short __atomic_fetch_and_2(volatile short *, short, int);
+int __atomic_fetch_and  (volatile int *, int, int);
+int __atomic_fetch_and_4(volatile int *, int, int);
+long long int __atomic_fetch_and  (volatile long long int *, long long int, int);
+long long int __atomic_fetch_and_8(volatile long long int *, long long int, int);
+__int128 __atomic_fetch_and   (volatile __int128 *, __int128, int);
+__int128 __atomic_fetch_and_16(volatile __int128 *, __int128, int);
+
+char __atomic_fetch_nand  (volatile char *, char, int);
+char __atomic_fetch_nand_1(volatile char *, char, int);
+short __atomic_fetch_nand  (volatile short *, short, int);
+short __atomic_fetch_nand_2(volatile short *, short, int);
+int __atomic_fetch_nand  (volatile int *, int, int);
+int __atomic_fetch_nand_4(volatile int *, int, int);
+long long int __atomic_fetch_nand  (volatile long long int *, long long int, int);
+long long int __atomic_fetch_nand_8(volatile long long int *, long long int, int);
+__int128 __atomic_fetch_nand   (volatile __int128 *, __int128, int);
+__int128 __atomic_fetch_nand_16(volatile __int128 *, __int128, int);
+
+char __atomic_fetch_xor  (volatile char *, char, int);
+char __atomic_fetch_xor_1(volatile char *, char, int);
+short __atomic_fetch_xor  (volatile short *, short, int);
+short __atomic_fetch_xor_2(volatile short *, short, int);
+int __atomic_fetch_xor  (volatile int *, int, int);
+int __atomic_fetch_xor_4(volatile int *, int, int);
+long long int __atomic_fetch_xor  (volatile long long int *, long long int, int);
+long long int __atomic_fetch_xor_8(volatile long long int *, long long int, int);
+__int128 __atomic_fetch_xor   (volatile __int128 *, __int128, int);
+__int128 __atomic_fetch_xor_16(volatile __int128 *, __int128, int);
+
+char __atomic_fetch_or  (volatile char *, char, int);
+char __atomic_fetch_or_1(volatile char *, char, int);
+short __atomic_fetch_or  (volatile short *, short, int);
+short __atomic_fetch_or_2(volatile short *, short, int);
+int __atomic_fetch_or  (volatile int *, int, int);
+int __atomic_fetch_or_4(volatile int *, int, int);
+long long int __atomic_fetch_or  (volatile long long int *, long long int, int);
+long long int __atomic_fetch_or_8(volatile long long int *, long long int, int);
+__int128 __atomic_fetch_or   (volatile __int128 *, __int128, int);
+__int128 __atomic_fetch_or_16(volatile __int128 *, __int128, int);
+
+_Bool __atomic_always_lock_free(unsigned long, const volatile void *);
+_Bool __atomic_is_lock_free(unsigned long, const volatile void *);
+
+void __atomic_thread_fence (int);
+void __atomic_signal_fence (int);
+void __atomic_feraiseexcept(int);
