diff mbox series

[08/11] AArch64: Test OpenMP simd aligned clause with SVE types.

Message ID 20240527050626.3769230-9-tejas.belagod@arm.com
State New
Headers show
Series AArch64/OpenMP: Test SVE ACLE types with various OpenMP constructs. | expand

Commit Message

Tejas Belagod May 27, 2024, 5:06 a.m. UTC
This patch tests simd aligned clause and their interaction with SVE types.

gcc/testsuite/ChangeLog

	* gcc.target/aarch64/sve/omp/simd-aligned.c: New test.
---
 .../gcc.target/aarch64/sve/omp/simd-aligned.c | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/omp/simd-aligned.c
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.target/aarch64/sve/omp/simd-aligned.c b/gcc/testsuite/gcc.target/aarch64/sve/omp/simd-aligned.c
new file mode 100644
index 00000000000..6c75bb5a714
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/omp/simd-aligned.c
@@ -0,0 +1,50 @@ 
+/* { dg-do run } */
+/* { dg-options "-msve-vector-bits=256 -std=gnu99 -fopenmp -O2 -fdump-tree-ompexp" } */
+#include <arm_sve.h>
+
+#define N 256
+
+int a[N] __attribute__((aligned (64)));
+int b[N] __attribute__((aligned (64)));
+
+
+__attribute((noipa))
+void foo (int *p, int *q)
+{
+   svint32_t va, vb, vc;
+   int i;
+   uint64_t sz = svcntw ();
+
+#pragma omp simd aligned(p, q : 64) private (va, vb, vc) nontemporal (va, vb, vc)
+  for (i = 0; i < N; i++)
+    {
+      if (i % sz == 0)
+	{
+	  va = svld1_s32 (svptrue_b32 (), p);
+	  vb = svindex_s32 (1, 0);
+	  vc = svadd_s32_z (svptrue_b32 (), va, vb);
+	  svst1_s32 (svptrue_b32 (), q, vc);
+	  q += sz;
+	}
+    }
+
+  return;
+}
+
+int main ()
+{
+
+  for (int i = 0;i < N; i++)
+    {
+      a[i] = 1;
+      b[i] = 0;
+    }
+
+  foo (a, b);
+
+  for (int i = 0;i < N; i++)
+    if (b[i] != 2)
+      __builtin_abort ();
+
+  return 0;
+}