Upgrade Boehm GC to 7.2alpha4.
[cacao.git] / src / mm / boehm-gc / libatomic_ops / tests / list_atomic.c
diff --git a/src/mm/boehm-gc/libatomic_ops/tests/list_atomic.c b/src/mm/boehm-gc/libatomic_ops/tests/list_atomic.c
new file mode 100644 (file)
index 0000000..1faf5c4
--- /dev/null
@@ -0,0 +1,569 @@
+#include "atomic_ops.h" 
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop)
+    "AO_nop(): ";
+    AO_nop();
+# else
+    "No AO_nop";
+# endif
+# if defined(AO_HAVE_load)
+    "AO_load(addr):";
+    AO_load(addr);
+# else
+    "No AO_load";
+# endif
+# if defined(AO_HAVE_store)
+    "AO_store(addr, val):";
+    AO_store(addr, val);
+# else
+    "No AO_store";
+# endif
+# if defined(AO_HAVE_test_and_set)
+    "AO_test_and_set(tsaddr):";
+    AO_test_and_set(tsaddr);
+# else
+    "No AO_test_and_set";
+# endif
+# if defined(AO_HAVE_fetch_and_add1)
+    "AO_fetch_and_add1(addr):";
+    AO_fetch_and_add1(addr);
+# else
+    "No AO_fetch_and_add1";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1)
+    "AO_fetch_and_sub1(addr):";
+    AO_fetch_and_sub1(addr);
+# else
+    "No AO_fetch_and_sub1";
+# endif
+# if defined(AO_HAVE_fetch_and_add)
+    "AO_fetch_and_add(addr, incr):";
+    AO_fetch_and_add(addr, incr);
+# else
+    "No AO_fetch_and_add";
+# endif
+# if defined(AO_HAVE_compare_and_swap)
+    "AO_compare_and_swap(addr, oldval, newval):";
+    AO_compare_and_swap(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap";
+# endif
+}
+
+
+    
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic_release(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop_release)
+    "AO_nop_release(): ";
+    AO_nop_release();
+# else
+    "No AO_nop_release";
+# endif
+# if defined(AO_HAVE_load_release)
+    "AO_load_release(addr):";
+    AO_load_release(addr);
+# else
+    "No AO_load_release";
+# endif
+# if defined(AO_HAVE_store_release)
+    "AO_store_release(addr, val):";
+    AO_store_release(addr, val);
+# else
+    "No AO_store_release";
+# endif
+# if defined(AO_HAVE_test_and_set_release)
+    "AO_test_and_set_release(tsaddr):";
+    AO_test_and_set_release(tsaddr);
+# else
+    "No AO_test_and_set_release";
+# endif
+# if defined(AO_HAVE_fetch_and_add1_release)
+    "AO_fetch_and_add1_release(addr):";
+    AO_fetch_and_add1_release(addr);
+# else
+    "No AO_fetch_and_add1_release";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1_release)
+    "AO_fetch_and_sub1_release(addr):";
+    AO_fetch_and_sub1_release(addr);
+# else
+    "No AO_fetch_and_sub1_release";
+# endif
+# if defined(AO_HAVE_fetch_and_add_release)
+    "AO_fetch_and_add_release(addr, incr):";
+    AO_fetch_and_add_release(addr, incr);
+# else
+    "No AO_fetch_and_add_release";
+# endif
+# if defined(AO_HAVE_compare_and_swap_release)
+    "AO_compare_and_swap_release(addr, oldval, newval):";
+    AO_compare_and_swap_release(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap_release";
+# endif
+}
+
+
+    
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic_acquire(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop_acquire)
+    "AO_nop_acquire(): ";
+    AO_nop_acquire();
+# else
+    "No AO_nop_acquire";
+# endif
+# if defined(AO_HAVE_load_acquire)
+    "AO_load_acquire(addr):";
+    AO_load_acquire(addr);
+# else
+    "No AO_load_acquire";
+# endif
+# if defined(AO_HAVE_store_acquire)
+    "AO_store_acquire(addr, val):";
+    AO_store_acquire(addr, val);
+# else
+    "No AO_store_acquire";
+# endif
+# if defined(AO_HAVE_test_and_set_acquire)
+    "AO_test_and_set_acquire(tsaddr):";
+    AO_test_and_set_acquire(tsaddr);
+# else
+    "No AO_test_and_set_acquire";
+# endif
+# if defined(AO_HAVE_fetch_and_add1_acquire)
+    "AO_fetch_and_add1_acquire(addr):";
+    AO_fetch_and_add1_acquire(addr);
+# else
+    "No AO_fetch_and_add1_acquire";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1_acquire)
+    "AO_fetch_and_sub1_acquire(addr):";
+    AO_fetch_and_sub1_acquire(addr);
+# else
+    "No AO_fetch_and_sub1_acquire";
+# endif
+# if defined(AO_HAVE_fetch_and_add_acquire)
+    "AO_fetch_and_add_acquire(addr, incr):";
+    AO_fetch_and_add_acquire(addr, incr);
+# else
+    "No AO_fetch_and_add_acquire";
+# endif
+# if defined(AO_HAVE_compare_and_swap_acquire)
+    "AO_compare_and_swap_acquire(addr, oldval, newval):";
+    AO_compare_and_swap_acquire(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap_acquire";
+# endif
+}
+
+
+    
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic_read(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop_read)
+    "AO_nop_read(): ";
+    AO_nop_read();
+# else
+    "No AO_nop_read";
+# endif
+# if defined(AO_HAVE_load_read)
+    "AO_load_read(addr):";
+    AO_load_read(addr);
+# else
+    "No AO_load_read";
+# endif
+# if defined(AO_HAVE_store_read)
+    "AO_store_read(addr, val):";
+    AO_store_read(addr, val);
+# else
+    "No AO_store_read";
+# endif
+# if defined(AO_HAVE_test_and_set_read)
+    "AO_test_and_set_read(tsaddr):";
+    AO_test_and_set_read(tsaddr);
+# else
+    "No AO_test_and_set_read";
+# endif
+# if defined(AO_HAVE_fetch_and_add1_read)
+    "AO_fetch_and_add1_read(addr):";
+    AO_fetch_and_add1_read(addr);
+# else
+    "No AO_fetch_and_add1_read";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1_read)
+    "AO_fetch_and_sub1_read(addr):";
+    AO_fetch_and_sub1_read(addr);
+# else
+    "No AO_fetch_and_sub1_read";
+# endif
+# if defined(AO_HAVE_fetch_and_add_read)
+    "AO_fetch_and_add_read(addr, incr):";
+    AO_fetch_and_add_read(addr, incr);
+# else
+    "No AO_fetch_and_add_read";
+# endif
+# if defined(AO_HAVE_compare_and_swap_read)
+    "AO_compare_and_swap_read(addr, oldval, newval):";
+    AO_compare_and_swap_read(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap_read";
+# endif
+}
+
+
+    
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic_write(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop_write)
+    "AO_nop_write(): ";
+    AO_nop_write();
+# else
+    "No AO_nop_write";
+# endif
+# if defined(AO_HAVE_load_write)
+    "AO_load_write(addr):";
+    AO_load_write(addr);
+# else
+    "No AO_load_write";
+# endif
+# if defined(AO_HAVE_store_write)
+    "AO_store_write(addr, val):";
+    AO_store_write(addr, val);
+# else
+    "No AO_store_write";
+# endif
+# if defined(AO_HAVE_test_and_set_write)
+    "AO_test_and_set_write(tsaddr):";
+    AO_test_and_set_write(tsaddr);
+# else
+    "No AO_test_and_set_write";
+# endif
+# if defined(AO_HAVE_fetch_and_add1_write)
+    "AO_fetch_and_add1_write(addr):";
+    AO_fetch_and_add1_write(addr);
+# else
+    "No AO_fetch_and_add1_write";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1_write)
+    "AO_fetch_and_sub1_write(addr):";
+    AO_fetch_and_sub1_write(addr);
+# else
+    "No AO_fetch_and_sub1_write";
+# endif
+# if defined(AO_HAVE_fetch_and_add_write)
+    "AO_fetch_and_add_write(addr, incr):";
+    AO_fetch_and_add_write(addr, incr);
+# else
+    "No AO_fetch_and_add_write";
+# endif
+# if defined(AO_HAVE_compare_and_swap_write)
+    "AO_compare_and_swap_write(addr, oldval, newval):";
+    AO_compare_and_swap_write(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap_write";
+# endif
+}
+
+
+    
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic_full(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop_full)
+    "AO_nop_full(): ";
+    AO_nop_full();
+# else
+    "No AO_nop_full";
+# endif
+# if defined(AO_HAVE_load_full)
+    "AO_load_full(addr):";
+    AO_load_full(addr);
+# else
+    "No AO_load_full";
+# endif
+# if defined(AO_HAVE_store_full)
+    "AO_store_full(addr, val):";
+    AO_store_full(addr, val);
+# else
+    "No AO_store_full";
+# endif
+# if defined(AO_HAVE_test_and_set_full)
+    "AO_test_and_set_full(tsaddr):";
+    AO_test_and_set_full(tsaddr);
+# else
+    "No AO_test_and_set_full";
+# endif
+# if defined(AO_HAVE_fetch_and_add1_full)
+    "AO_fetch_and_add1_full(addr):";
+    AO_fetch_and_add1_full(addr);
+# else
+    "No AO_fetch_and_add1_full";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1_full)
+    "AO_fetch_and_sub1_full(addr):";
+    AO_fetch_and_sub1_full(addr);
+# else
+    "No AO_fetch_and_sub1_full";
+# endif
+# if defined(AO_HAVE_fetch_and_add_full)
+    "AO_fetch_and_add_full(addr, incr):";
+    AO_fetch_and_add_full(addr, incr);
+# else
+    "No AO_fetch_and_add_full";
+# endif
+# if defined(AO_HAVE_compare_and_swap_full)
+    "AO_compare_and_swap_full(addr, oldval, newval):";
+    AO_compare_and_swap_full(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap_full";
+# endif
+}
+
+
+    
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic_release_write(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop_release_write)
+    "AO_nop_release_write(): ";
+    AO_nop_release_write();
+# else
+    "No AO_nop_release_write";
+# endif
+# if defined(AO_HAVE_load_release_write)
+    "AO_load_release_write(addr):";
+    AO_load_release_write(addr);
+# else
+    "No AO_load_release_write";
+# endif
+# if defined(AO_HAVE_store_release_write)
+    "AO_store_release_write(addr, val):";
+    AO_store_release_write(addr, val);
+# else
+    "No AO_store_release_write";
+# endif
+# if defined(AO_HAVE_test_and_set_release_write)
+    "AO_test_and_set_release_write(tsaddr):";
+    AO_test_and_set_release_write(tsaddr);
+# else
+    "No AO_test_and_set_release_write";
+# endif
+# if defined(AO_HAVE_fetch_and_add1_release_write)
+    "AO_fetch_and_add1_release_write(addr):";
+    AO_fetch_and_add1_release_write(addr);
+# else
+    "No AO_fetch_and_add1_release_write";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1_release_write)
+    "AO_fetch_and_sub1_release_write(addr):";
+    AO_fetch_and_sub1_release_write(addr);
+# else
+    "No AO_fetch_and_sub1_release_write";
+# endif
+# if defined(AO_HAVE_fetch_and_add_release_write)
+    "AO_fetch_and_add_release_write(addr, incr):";
+    AO_fetch_and_add_release_write(addr, incr);
+# else
+    "No AO_fetch_and_add_release_write";
+# endif
+# if defined(AO_HAVE_compare_and_swap_release_write)
+    "AO_compare_and_swap_release_write(addr, oldval, newval):";
+    AO_compare_and_swap_release_write(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap_release_write";
+# endif
+}
+
+
+    
+/*
+ * Copyright (c) 2003 by Hewlett-Packard Company.  All rights reserved.
+ *
+ * This file is covered by the GNU general public license, version 2.
+ * see doc/COPYING for details.
+ */
+
+/* This generates a compilable program.  But it is really meant to be  */
+/* be used only with cc -E, to inspect the expensions generated by     */
+/* primitives.                                                         */
+
+/* The result will not link or run.                                    */
+
+void list_atomic_acquire_read(void)
+{
+  AO_T *addr, val, newval, oldval;
+  AO_TS_T tsaddr;
+  long incr;
+
+# if defined(AO_HAVE_nop_acquire_read)
+    "AO_nop_acquire_read(): ";
+    AO_nop_acquire_read();
+# else
+    "No AO_nop_acquire_read";
+# endif
+# if defined(AO_HAVE_load_acquire_read)
+    "AO_load_acquire_read(addr):";
+    AO_load_acquire_read(addr);
+# else
+    "No AO_load_acquire_read";
+# endif
+# if defined(AO_HAVE_store_acquire_read)
+    "AO_store_acquire_read(addr, val):";
+    AO_store_acquire_read(addr, val);
+# else
+    "No AO_store_acquire_read";
+# endif
+# if defined(AO_HAVE_test_and_set_acquire_read)
+    "AO_test_and_set_acquire_read(tsaddr):";
+    AO_test_and_set_acquire_read(tsaddr);
+# else
+    "No AO_test_and_set_acquire_read";
+# endif
+# if defined(AO_HAVE_fetch_and_add1_acquire_read)
+    "AO_fetch_and_add1_acquire_read(addr):";
+    AO_fetch_and_add1_acquire_read(addr);
+# else
+    "No AO_fetch_and_add1_acquire_read";
+# endif
+# if defined(AO_HAVE_fetch_and_sub1_acquire_read)
+    "AO_fetch_and_sub1_acquire_read(addr):";
+    AO_fetch_and_sub1_acquire_read(addr);
+# else
+    "No AO_fetch_and_sub1_acquire_read";
+# endif
+# if defined(AO_HAVE_fetch_and_add_acquire_read)
+    "AO_fetch_and_add_acquire_read(addr, incr):";
+    AO_fetch_and_add_acquire_read(addr, incr);
+# else
+    "No AO_fetch_and_add_acquire_read";
+# endif
+# if defined(AO_HAVE_compare_and_swap_acquire_read)
+    "AO_compare_and_swap_acquire_read(addr, oldval, newval):";
+    AO_compare_and_swap_acquire_read(addr, oldval, newval);
+# else
+    "No AO_compare_and_swap_acquire_read";
+# endif
+}
+
+
+