================
@@ -0,0 +1,73 @@
+// RUN: %libomptarget-compile-run-and-check-generic
+// This test checks that "update from" clause in OpenMP supports strided
+// sections. #pragma omp target update from(result[0:N/2:2]) updates every
other
+// element from device
+#include <omp.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define N 32
+
+int main() {
+ double *result = (double *)calloc(N, sizeof(double));
+
+ printf("initial host array values:\n");
+ for (int i = 0; i < N; i++)
+ printf("%f\n", result[i]);
+ printf("\n");
+
+#pragma omp target data map(to : result[0 : N])
+ {
+#pragma omp target map(alloc : result[0 : N])
+ for (int i = 0; i < N; i++)
+ result[i] += i;
+
+ // Update strided elements from device: even indices 0,2,4,...,30
+#pragma omp target update from(result[0 : 16 : 2])
+ }
+
+ printf("after target update from (even indices up to 30 updated):\n");
+ for (int i = 0; i < N; i++)
+ printf("%f\n", result[i]);
+ printf("\n");
+
+ // Expected: even indices i, odd indices 0
----------------
amitamd7 wrote:
Fixed.
https://github.com/llvm/llvm-project/pull/157443
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits