================
@@ -0,0 +1,49 @@
+// expected-no-diagnostics
+#ifndef HEADER
+#define HEADER
+
+///==========================================================================///
+// RUN: %clang_cc1 -DCK -verify -fopenmp 
-fopenmp-targets=powerpc64le-ibm-linux-gnu -x c -triple 
powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix CK 
--check-prefix CK-64
+// RUN: %clang_cc1 -DCK -verify -fopenmp -fopenmp-targets=i386-pc-linux-gnu -x 
c -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix 
CK --check-prefix CK-32
+
+// RUN: %clang_cc1 -DCK -verify -fopenmp-simd 
-fopenmp-targets=powerpc64le-ibm-linux-gnu -x c -triple 
powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefix 
SIMD-ONLY0 %s
+// RUN: %clang_cc1 -DCK -verify -fopenmp-simd 
-fopenmp-targets=i386-pc-linux-gnu -x c -triple i386-unknown-unknown -emit-llvm 
%s -o - | FileCheck --check-prefix SIMD-ONLY0 %s
+// SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
+#ifdef CK
+
+// Test that variable stride expressions in target update directives correctly
+// set the OMP_MAP_NON_CONTIG flag (0x100000000000) in the generated IR.
+// OMP_MAP_TO = 0x1, OMP_MAP_FROM = 0x2
+// NON_CONTIG | TO = 0x100000000001, NON_CONTIG | FROM = 0x100000000002
+
+extern int get_stride();
+
+// CK-64-DAG: [[MTYPE_VAR_STRIDE_TO:@.+]] = {{.+}}constant [1 x i64] [i64 
[[#0x100000000001]]]
+// CK-32-DAG: [[MTYPE_VAR_STRIDE_TO:@.+]] = {{.+}}constant [1 x i64] [i64 
[[#0x100000000001]]]
+// CK-64-DAG: [[MTYPE_VAR_STRIDE_FROM:@.+]] = {{.+}}constant [1 x i64] [i64 
[[#0x100000000002]]]
+// CK-32-DAG: [[MTYPE_VAR_STRIDE_FROM:@.+]] = {{.+}}constant [1 x i64] [i64 
[[#0x100000000002]]]
+// CK-64-DAG: [[MTYPE_CONST_STRIDE_ONE:@.+]] = {{.+}}constant [1 x i64] [i64 
[[#0x1]]]
+// CK-32-DAG: [[MTYPE_CONST_STRIDE_ONE:@.+]] = {{.+}}constant [1 x i64] [i64 
[[#0x1]]]
+
+void test_variable_stride_to() {
+  int stride = get_stride();
+  int data[10];
+  // CK-DAG: call void @__tgt_target_data_update_mapper(ptr @{{.+}}, i64 -1, 
i32 1, ptr {{%.+}}, ptr {{%.+}}, ptr @.offload_sizes, ptr 
[[MTYPE_VAR_STRIDE_TO]], ptr null, ptr null)
+  #pragma omp target update to(data[0:5:stride])
----------------
amitamd7 wrote:

Addressed the changes. The other related test `target_update_codegen.cpp` uses 
manual ways.   

https://github.com/llvm/llvm-project/pull/176708
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to