diff gcc/testsuite/c-c++-common/gomp/declare-variant-1.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/c-c++-common/gomp/declare-variant-1.c	Thu Feb 13 11:34:05 2020 +0900
@@ -0,0 +1,54 @@
+int foo (int, int, int *);
+int bar (int, int, int *);
+#pragma omp declare variant (foo) \
+  match (construct={parallel,for},\
+	 device={isa(avx512f,avx512vl),kind(host,cpu)},\
+	 implementation={vendor(score(0):gnu),unified_shared_memory},\
+	 user={condition(score(0):0)})
+#pragma omp declare variant (bar) \
+  match (device={arch(x86_64,powerpc64),isa(avx512f,popcntb)}, \
+	 implementation={atomic_default_mem_order(seq_cst),made_up_selector("foo", 13, "bar")}, \
+	 user={condition(3-3)})
+int baz (int, int, int *);
+
+int
+qux (void)
+{
+  int i = 3;
+  return baz (1, 2, &i);
+}
+
+int quux (int);
+
+void
+corge (void)
+{
+  int i;
+  #pragma omp declare variant (quux) match (construct={parallel,for})
+  extern int waldo (int);
+  waldo (5);
+  #pragma omp parallel for
+  for (i = 0; i < 3; i++)
+    waldo (6);
+  #pragma omp parallel
+  #pragma omp taskgroup
+  #pragma omp for
+  for (i = 0; i < 3; i++)
+    waldo (7);
+  #pragma omp parallel
+  #pragma omp master    
+  waldo (8);
+}
+
+#pragma omp declare variant (bar) match \
+  (implementation={atomic_default_mem_order(relaxed), \
+		   unified_address, unified_shared_memory, \
+		   dynamic_allocators, reverse_offload})
+int baz2 (int x, int y, int *z)
+{
+  return x + y + *z;
+}
+
+#pragma omp declare variant (bar) match \
+  (implementation={atomic_default_mem_order(score(3): acq_rel)})
+int baz3 (int, int, int *);