Index: src/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision 13e8427b41e29d52c2ff676adeeabbb22b910b3a)
+++ src/libcfa/concurrency/preemption.c	(revision 533540a2637374251ff8466708ef82ad66b25a16)
@@ -161,5 +161,7 @@
 	void disable_interrupts() {
 		with( kernelTLS.preemption_state ) {
+			#if GCC_VERSION > 50000
 			static_assert(__atomic_always_lock_free(sizeof(enabled), &enabled), "Must be lock-free");
+			#endif
 
 			// Set enabled flag to false
@@ -190,5 +192,7 @@
 			// Check if we need to prempt the thread because an interrupt was missed
 			if( prev == 1 ) {
+				#if GCC_VERSION > 50000
 				static_assert(__atomic_always_lock_free(sizeof(enabled), &enabled), "Must be lock-free");
+				#endif
 
 				// Set enabled flag to true
@@ -217,5 +221,7 @@
 		verifyf( prev != 0u, "Incremented from %u\n", prev );                     // If this triggers someone is enabled already enabled interrupts
 		if( prev == 1 ) {
+			#if GCC_VERSION > 50000
 			static_assert(__atomic_always_lock_free(sizeof(kernelTLS.preemption_state.enabled), &kernelTLS.preemption_state.enabled), "Must be lock-free");
+			#endif
 			// Set enabled flag to true
 			// should be atomic to avoid preemption in the middle of the operation.
@@ -376,5 +382,7 @@
 
 	// Clear sighandler mask before context switching.
+	#if GCC_VERSION > 50000
 	static_assert( sizeof( sigset_t ) == sizeof( cxt->uc_sigmask ), "Expected cxt->uc_sigmask to be of sigset_t" );
+	#endif
 	if ( pthread_sigmask( SIG_SETMASK, (sigset_t *)&(cxt->uc_sigmask), NULL ) == -1 ) {
 		abort( "internal error, sigprocmask" );
Index: src/prelude/Makefile.am
===================================================================
--- src/prelude/Makefile.am	(revision 13e8427b41e29d52c2ff676adeeabbb22b910b3a)
+++ src/prelude/Makefile.am	(revision 533540a2637374251ff8466708ef82ad66b25a16)
@@ -37,8 +37,8 @@
 # create forward declarations for gcc builtins
 gcc-builtins.cf : gcc-builtins.c prototypes.sed
-	${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -r -f prototypes.sed > $@
+	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -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 > $@
+	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E prototypes.c | awk -f prototypes.awk > $@
 
 builtins.def :
Index: src/prelude/Makefile.in
===================================================================
--- src/prelude/Makefile.in	(revision 13e8427b41e29d52c2ff676adeeabbb22b910b3a)
+++ src/prelude/Makefile.in	(revision 533540a2637374251ff8466708ef82ad66b25a16)
@@ -506,8 +506,8 @@
 # create forward declarations for gcc builtins
 gcc-builtins.cf : gcc-builtins.c prototypes.sed
-	${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -r -f prototypes.sed > $@
+	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -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 > $@
+	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E prototypes.c | awk -f prototypes.awk > $@
 
 builtins.def :
Index: src/prelude/prelude.cf
===================================================================
--- src/prelude/prelude.cf	(revision 13e8427b41e29d52c2ff676adeeabbb22b910b3a)
+++ src/prelude/prelude.cf	(revision 533540a2637374251ff8466708ef82ad66b25a16)
@@ -458,5 +458,4 @@
 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/sync-builtins.cf
===================================================================
--- src/prelude/sync-builtins.cf	(revision 13e8427b41e29d52c2ff676adeeabbb22b910b3a)
+++ src/prelude/sync-builtins.cf	(revision 533540a2637374251ff8466708ef82ad66b25a16)
@@ -7,6 +7,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_fetch_and_add(volatile __int128 *, __int128,...);
 __int128 __sync_fetch_and_add_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_fetch_and_sub(volatile char *, char,...);
@@ -18,6 +20,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_fetch_and_sub(volatile __int128 *, __int128,...);
 __int128 __sync_fetch_and_sub_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_fetch_and_or(volatile char *, char,...);
@@ -29,6 +33,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_fetch_and_or(volatile __int128 *, __int128,...);
 __int128 __sync_fetch_and_or_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_fetch_and_and(volatile char *, char,...);
@@ -40,6 +46,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_fetch_and_and(volatile __int128 *, __int128,...);
 __int128 __sync_fetch_and_and_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_fetch_and_xor(volatile char *, char,...);
@@ -51,6 +59,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_fetch_and_xor(volatile __int128 *, __int128,...);
 __int128 __sync_fetch_and_xor_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_fetch_and_nand(volatile char *, char,...);
@@ -62,6 +72,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_fetch_and_nand(volatile __int128 *, __int128,...);
 __int128 __sync_fetch_and_nand_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_add_and_fetch(volatile char *, char,...);
@@ -73,6 +85,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_add_and_fetch(volatile __int128 *, __int128,...);
 __int128 __sync_add_and_fetch_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_sub_and_fetch(volatile char *, char,...);
@@ -84,6 +98,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_sub_and_fetch(volatile __int128 *, __int128,...);
 __int128 __sync_sub_and_fetch_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_or_and_fetch(volatile char *, char,...);
@@ -95,6 +111,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_or_and_fetch(volatile __int128 *, __int128,...);
 __int128 __sync_or_and_fetch_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_and_and_fetch(volatile char *, char,...);
@@ -106,6 +124,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_and_and_fetch(volatile __int128 *, __int128,...);
 __int128 __sync_and_and_fetch_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_xor_and_fetch(volatile char *, char,...);
@@ -117,6 +137,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_xor_and_fetch(volatile __int128 *, __int128,...);
 __int128 __sync_xor_and_fetch_16(volatile __int128 *, __int128,...);
+#endif
 
 char __sync_nand_and_fetch(volatile char *, char,...);
@@ -128,6 +150,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_nand_and_fetch(volatile __int128 *, __int128,...);
 __int128 __sync_nand_and_fetch_16(volatile __int128 *, __int128,...);
+#endif
 
 _Bool __sync_bool_compare_and_swap(volatile char *, char, char,...);
@@ -139,6 +163,8 @@
 _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,...);
+#if defined(__SIZEOF_INT128__)
 _Bool __sync_bool_compare_and_swap(volatile __int128 *, __int128, __int128,...);
 _Bool __sync_bool_compare_and_swap_16(volatile __int128 *, __int128, __int128,...);
+#endif
 
 char __sync_val_compare_and_swap(volatile char *, char, char,...);
@@ -150,6 +176,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_val_compare_and_swap(volatile __int128 *, __int128, __int128,...);
 __int128 __sync_val_compare_and_swap_16(volatile __int128 *, __int128, __int128,...);
+#endif
 
 char __sync_lock_test_and_set(volatile char *, char,...);
@@ -161,6 +189,8 @@
 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,...);
+#if defined(__SIZEOF_INT128__)
 __int128 __sync_lock_test_and_set(volatile __int128 *, __int128,...);
 __int128 __sync_lock_test_and_set_16(volatile __int128 *, __int128,...);
+#endif
 
 void __sync_lock_release(volatile char *,...);
@@ -172,6 +202,8 @@
 void __sync_lock_release(volatile long long int *,...);
 void __sync_lock_release_8(volatile long long int *,...);
+#if defined(__SIZEOF_INT128__)
 void __sync_lock_release(volatile __int128 *,...);
 void __sync_lock_release_16(volatile __int128 *,...);
+#endif
 
 void __sync_synchronize();
@@ -185,5 +217,8 @@
 _Bool __atomic_test_and_set(volatile int *, int);
 _Bool __atomic_test_and_set(volatile long long int *, int);
+#if defined(__SIZEOF_INT128__)
 _Bool __atomic_test_and_set(volatile __int128 *, int);
+#endif
+
 void __atomic_clear(volatile _Bool *, int);
 void __atomic_clear(volatile char *, int);
@@ -191,5 +226,7 @@
 void __atomic_clear(volatile int *, int);
 void __atomic_clear(volatile long long int *, int);
+#if defined(__SIZEOF_INT128__)
 void __atomic_clear(volatile __int128 *, int);
+#endif
 
 char __atomic_exchange_n(volatile char *, volatile char *, int);
@@ -205,7 +242,9 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __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);
+#endif
 
 char __atomic_load_n(const volatile char *, int);
@@ -221,7 +260,9 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __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);
+#endif
 
 _Bool __atomic_compare_exchange_n(volatile char *, char *, char, _Bool, int, int);
@@ -237,7 +278,9 @@
 _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);
+#if defined(__SIZEOF_INT128__)
 _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);
+#endif
 
 void __atomic_store_n(volatile _Bool *, _Bool, int);
@@ -256,7 +299,9 @@
 void __atomic_store_8(volatile long long int *, long long int, int);
 void __atomic_store(volatile long long int *, long long int *, int);
+#if defined(__SIZEOF_INT128__)
 void __atomic_store_n(volatile __int128 *, __int128, int);
 void __atomic_store_16(volatile __int128 *, __int128, int);
 void __atomic_store(volatile __int128 *, __int128 *, int);
+#endif
 
 char __atomic_add_fetch  (volatile char *, char, int);
@@ -268,6 +313,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_add_fetch   (volatile __int128 *, __int128, int);
 __int128 __atomic_add_fetch_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_sub_fetch  (volatile char *, char, int);
@@ -279,6 +326,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_sub_fetch   (volatile __int128 *, __int128, int);
 __int128 __atomic_sub_fetch_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_and_fetch  (volatile char *, char, int);
@@ -290,6 +339,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_and_fetch   (volatile __int128 *, __int128, int);
 __int128 __atomic_and_fetch_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_nand_fetch  (volatile char *, char, int);
@@ -301,6 +352,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_nand_fetch   (volatile __int128 *, __int128, int);
 __int128 __atomic_nand_fetch_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_xor_fetch  (volatile char *, char, int);
@@ -312,6 +365,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_xor_fetch   (volatile __int128 *, __int128, int);
 __int128 __atomic_xor_fetch_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_or_fetch  (volatile char *, char, int);
@@ -323,6 +378,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_or_fetch   (volatile __int128 *, __int128, int);
 __int128 __atomic_or_fetch_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_fetch_add  (volatile char *, char, int);
@@ -334,6 +391,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_fetch_add   (volatile __int128 *, __int128, int);
 __int128 __atomic_fetch_add_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_fetch_sub  (volatile char *, char, int);
@@ -345,6 +404,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_fetch_sub   (volatile __int128 *, __int128, int);
 __int128 __atomic_fetch_sub_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_fetch_and  (volatile char *, char, int);
@@ -356,6 +417,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_fetch_and   (volatile __int128 *, __int128, int);
 __int128 __atomic_fetch_and_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_fetch_nand  (volatile char *, char, int);
@@ -367,6 +430,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_fetch_nand   (volatile __int128 *, __int128, int);
 __int128 __atomic_fetch_nand_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_fetch_xor  (volatile char *, char, int);
@@ -378,6 +443,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_fetch_xor   (volatile __int128 *, __int128, int);
 __int128 __atomic_fetch_xor_16(volatile __int128 *, __int128, int);
+#endif
 
 char __atomic_fetch_or  (volatile char *, char, int);
@@ -389,6 +456,8 @@
 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);
+#if defined(__SIZEOF_INT128__)
 __int128 __atomic_fetch_or   (volatile __int128 *, __int128, int);
 __int128 __atomic_fetch_or_16(volatile __int128 *, __int128, int);
+#endif
 
 _Bool __atomic_always_lock_free(unsigned long, const volatile void *);
Index: src/tests/builtins/sync.c
===================================================================
--- src/tests/builtins/sync.c	(revision 13e8427b41e29d52c2ff676adeeabbb22b910b3a)
+++ src/tests/builtins/sync.c	(revision 533540a2637374251ff8466708ef82ad66b25a16)
@@ -8,5 +8,7 @@
 	volatile int * vp4 = 0; int * rp4 = 0; int v4 = 0;
 	volatile long long int * vp8 = 0; long long int * rp8 = 0; long long int v8 = 0;
+	#if defined(__SIZEOF_INT128__)
 	volatile __int128 * vp16 = 0; __int128 * rp16 = 0; __int128 v16 = 0;
+	#endif
 
 	{ char ret; ret = __sync_fetch_and_add(vp1, v1); }
@@ -18,6 +20,8 @@
 	{ long long int ret; ret = __sync_fetch_and_add(vp8, v8); }
 	{ long long int ret; ret = __sync_fetch_and_add_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_fetch_and_add(vp16, v16); }
 	{ __int128 ret; ret = __sync_fetch_and_add_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_fetch_and_sub(vp1, v1); }
@@ -29,6 +33,8 @@
 	{ long long int ret; ret = __sync_fetch_and_sub(vp8, v8); }
 	{ long long int ret; ret = __sync_fetch_and_sub_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_fetch_and_sub(vp16, v16); }
 	{ __int128 ret; ret = __sync_fetch_and_sub_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_fetch_and_or(vp1, v1); }
@@ -40,6 +46,8 @@
 	{ long long int ret; ret = __sync_fetch_and_or(vp8, v8); }
 	{ long long int ret; ret = __sync_fetch_and_or_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_fetch_and_or(vp16, v16); }
 	{ __int128 ret; ret = __sync_fetch_and_or_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_fetch_and_and(vp1, v1); }
@@ -51,6 +59,8 @@
 	{ long long int ret; ret = __sync_fetch_and_and(vp8, v8); }
 	{ long long int ret; ret = __sync_fetch_and_and_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_fetch_and_and(vp16, v16); }
 	{ __int128 ret; ret = __sync_fetch_and_and_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_fetch_and_xor(vp1, v1); }
@@ -62,6 +72,8 @@
 	{ long long int ret; ret = __sync_fetch_and_xor(vp8, v8); }
 	{ long long int ret; ret = __sync_fetch_and_xor_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_fetch_and_xor(vp16, v16); }
 	{ __int128 ret; ret = __sync_fetch_and_xor_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_fetch_and_nand(vp1, v1); }
@@ -73,6 +85,8 @@
 	{ long long int ret; ret = __sync_fetch_and_nand(vp8, v8); }
 	{ long long int ret; ret = __sync_fetch_and_nand_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_fetch_and_nand(vp16, v16); }
 	{ __int128 ret; ret = __sync_fetch_and_nand_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_add_and_fetch(vp1, v1); }
@@ -84,6 +98,8 @@
 	{ long long int ret; ret = __sync_add_and_fetch(vp8, v8); }
 	{ long long int ret; ret = __sync_add_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_add_and_fetch(vp16, v16); }
 	{ __int128 ret; ret = __sync_add_and_fetch_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_sub_and_fetch(vp1, v1); }
@@ -95,6 +111,8 @@
 	{ long long int ret; ret = __sync_sub_and_fetch(vp8, v8); }
 	{ long long int ret; ret = __sync_sub_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_sub_and_fetch(vp16, v16); }
 	{ __int128 ret; ret = __sync_sub_and_fetch_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_or_and_fetch(vp1, v1); }
@@ -106,6 +124,8 @@
 	{ long long int ret; ret = __sync_or_and_fetch(vp8, v8); }
 	{ long long int ret; ret = __sync_or_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_or_and_fetch(vp16, v16); }
 	{ __int128 ret; ret = __sync_or_and_fetch_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_and_and_fetch(vp1, v1); }
@@ -117,6 +137,8 @@
 	{ long long int ret; ret = __sync_and_and_fetch(vp8, v8); }
 	{ long long int ret; ret = __sync_and_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_and_and_fetch(vp16, v16); }
 	{ __int128 ret; ret = __sync_and_and_fetch_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_xor_and_fetch(vp1, v1); }
@@ -128,6 +150,8 @@
 	{ long long int ret; ret = __sync_xor_and_fetch(vp8, v8); }
 	{ long long int ret; ret = __sync_xor_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_xor_and_fetch(vp16, v16); }
 	{ __int128 ret; ret = __sync_xor_and_fetch_16(vp16, v16); }
+	#endif
 
 	{ char ret; ret = __sync_nand_and_fetch(vp1, v1); }
@@ -139,6 +163,8 @@
 	{ long long int ret; ret = __sync_nand_and_fetch(vp8, v8); }
 	{ long long int ret; ret = __sync_nand_and_fetch_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_nand_and_fetch(vp16, v16); }
 	{ __int128 ret; ret = __sync_nand_and_fetch_16(vp16, v16); }
+	#endif
 
 	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp1, v1, v1); }
@@ -150,6 +176,8 @@
 	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp8, v8, v8); }
 	{ _Bool ret; ret = __sync_bool_compare_and_swap_8(vp8, v8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ _Bool ret; ret = __sync_bool_compare_and_swap(vp16, v16, v16); }
 	{ _Bool ret; ret = __sync_bool_compare_and_swap_16(vp16, v16,v16); }
+	#endif
 
 	{ char ret; ret = __sync_val_compare_and_swap(vp1, v1, v1); }
@@ -161,6 +189,8 @@
 	{ long long int ret; ret = __sync_val_compare_and_swap(vp8, v8, v8); }
 	{ long long int ret; ret = __sync_val_compare_and_swap_8(vp8, v8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_val_compare_and_swap(vp16, v16, v16); }
 	{ __int128 ret; ret = __sync_val_compare_and_swap_16(vp16, v16,v16); }
+	#endif
 
 	{ char ret; ret = __sync_lock_test_and_set(vp1, v1); }
@@ -172,6 +202,8 @@
 	{ long long int ret; ret = __sync_lock_test_and_set(vp8, v8); }
 	{ long long int ret; ret = __sync_lock_test_and_set_8(vp8, v8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __sync_lock_test_and_set(vp16, v16); }
 	{ __int128 ret; ret = __sync_lock_test_and_set_16(vp16, v16); }
+	#endif
 
 	{ __sync_lock_release(vp1); }
@@ -183,6 +215,8 @@
 	{ __sync_lock_release(vp8); }
 	{ __sync_lock_release_8(vp8); }
+	#if defined(__SIZEOF_INT128__)
 	{ __sync_lock_release(vp16); }
 	{ __sync_lock_release_16(vp16); }
+	#endif
 
 	{ __sync_synchronize(); }
@@ -208,7 +242,9 @@
 	{ long long int ret; ret = __atomic_exchange_8(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; __atomic_exchange(vp8, &v8, &ret, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_exchange_n(vp16, &v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_exchange_16(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; __atomic_exchange(vp16, &v16, &ret, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_load_n(vp1, __ATOMIC_SEQ_CST); }
@@ -224,7 +260,9 @@
 	{ long long int ret; ret = __atomic_load_8(vp8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; __atomic_load(vp8, &ret, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_load_n(vp16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_load_16(vp16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; __atomic_load(vp16, &ret, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ _Bool ret; ret = __atomic_compare_exchange_n(vp1, rp1, v1, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
@@ -240,7 +278,9 @@
 	{ _Bool ret; ret = __atomic_compare_exchange_8(vp8, rp8, v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
 	{ _Bool ret; ret = __atomic_compare_exchange(vp8, rp8, &v8, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ _Bool ret; ret = __atomic_compare_exchange_n(vp16, rp16, v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
 	{ _Bool ret; ret = __atomic_compare_exchange_16(vp16, rp16, v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
 	{ _Bool ret; ret = __atomic_compare_exchange(vp16, rp16, &v16, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ __atomic_store_n(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -256,7 +296,9 @@
 	{ __atomic_store_8(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ __atomic_store(vp8, &v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __atomic_store_n(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __atomic_store_16(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __atomic_store(vp16, &v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_add_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -268,6 +310,8 @@
 	{ long long int ret; ret = __atomic_add_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_add_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_add_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_add_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_sub_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -279,6 +323,8 @@
 	{ long long int ret; ret = __atomic_sub_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_sub_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_sub_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_sub_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_and_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -290,6 +336,8 @@
 	{ long long int ret; ret = __atomic_and_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_and_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_and_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_and_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_nand_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -301,6 +349,8 @@
 	{ long long int ret; ret = __atomic_nand_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_nand_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_nand_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_nand_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_xor_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -312,6 +362,8 @@
 	{ long long int ret; ret = __atomic_xor_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_xor_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_xor_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_xor_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_or_fetch(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -323,6 +375,8 @@
 	{ long long int ret; ret = __atomic_or_fetch(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_or_fetch_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_or_fetch(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_or_fetch_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_fetch_add(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -334,6 +388,8 @@
 	{ long long int ret; ret = __atomic_fetch_add(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_fetch_add_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_fetch_add(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_fetch_add_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_fetch_sub(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -345,6 +401,8 @@
 	{ long long int ret; ret = __atomic_fetch_sub(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_fetch_sub_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_fetch_sub(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_fetch_sub_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_fetch_and(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -356,6 +414,8 @@
 	{ long long int ret; ret = __atomic_fetch_and(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_fetch_and_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_fetch_and(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_fetch_and_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_fetch_nand(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -367,6 +427,8 @@
 	{ long long int ret; ret = __atomic_fetch_nand(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_fetch_nand_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_fetch_nand(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_fetch_nand_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_fetch_xor(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -378,6 +440,8 @@
 	{ long long int ret; ret = __atomic_fetch_xor(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_fetch_xor_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_fetch_xor(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_fetch_xor_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ char ret; ret = __atomic_fetch_or(vp1, v1, __ATOMIC_SEQ_CST); }
@@ -389,6 +453,8 @@
 	{ long long int ret; ret = __atomic_fetch_or(vp8, v8, __ATOMIC_SEQ_CST); }
 	{ long long int ret; ret = __atomic_fetch_or_8(vp8, v8, __ATOMIC_SEQ_CST); }
+	#if defined(__SIZEOF_INT128__)
 	{ __int128 ret; ret = __atomic_fetch_or(vp16, v16, __ATOMIC_SEQ_CST); }
 	{ __int128 ret; ret = __atomic_fetch_or_16(vp16, v16, __ATOMIC_SEQ_CST); }
+	#endif
 
 	{ _Bool ret; ret = __atomic_always_lock_free(sizeof(int), vp4); }
