summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/taskloop_reduction_codegen.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2019-12-31 12:41:57 -0500
committerAlexey Bataev <a.bataev@hotmail.com>2019-12-31 14:11:36 -0500
commit8be5a0fe12bb9114bb82986b1dcb9205699aa085 (patch)
tree0a92eacadf0e967555cf4acb053e49a272f4d1ec /clang/test/OpenMP/taskloop_reduction_codegen.cpp
parent7544cb8807b2ecb2f5186ab18d0ffa865a493a47 (diff)
downloadbcm5719-llvm-8be5a0fe12bb9114bb82986b1dcb9205699aa085.tar.gz
bcm5719-llvm-8be5a0fe12bb9114bb82986b1dcb9205699aa085.zip
[OPENMP]Emit artificial threprivate vars as threadlocal, if possible.
It may improve performance for declare reduction constructs.
Diffstat (limited to 'clang/test/OpenMP/taskloop_reduction_codegen.cpp')
-rw-r--r--clang/test/OpenMP/taskloop_reduction_codegen.cpp23
1 files changed, 9 insertions, 14 deletions
diff --git a/clang/test/OpenMP/taskloop_reduction_codegen.cpp b/clang/test/OpenMP/taskloop_reduction_codegen.cpp
index 16bafb3acf7..fec3e62114e 100644
--- a/clang/test/OpenMP/taskloop_reduction_codegen.cpp
+++ b/clang/test/OpenMP/taskloop_reduction_codegen.cpp
@@ -4,6 +4,10 @@
// SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
// expected-no-diagnostics
+// CHECK: [[RED_SIZE1:@reduction_size[.].+]] = common thread_local global i64 0
+// CHECK: [[RED1:@reduction[.].+]] = common thread_local global i8* null
+// CHECK: [[RED_SIZE2:@reduction_size[.].+]] = common thread_local global i64 0
+
struct S {
float a;
S() : a(0.0f) {}
@@ -163,10 +167,7 @@ sum = 0.0;
// CHECK: ret void
// CHECK: define internal void @[[RED_INIT2]](i8* %0)
-// CHECK: call i8* @__kmpc_threadprivate_cached(
-// CHECK: [[ORIG_PTR_ADDR:%.+]] = call i8* @__kmpc_threadprivate_cached(
-// CHECK: [[ORIG_PTR_REF:%.+]] = bitcast i8* [[ORIG_PTR_ADDR]] to i8**
-// CHECK: load i8*, i8** [[ORIG_PTR_REF]],
+// CHECK: load i8*, i8** [[RED1]],
// CHECK: call void [[OMP_INIT1:@.+]](
// CHECK: ret void
@@ -177,12 +178,12 @@ sum = 0.0;
// CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(
// CHECK: define internal void @[[RED_FINI2]](i8* %0)
-// CHECK: call i8* @__kmpc_threadprivate_cached(
+// CHECK: load i64, i64* [[RED_SIZE1]]
// CHECK: call void @
// CHECK: ret void
// CHECK: define internal void @[[RED_COMB2]](i8* %0, i8* %1)
-// CHECK: call i8* @__kmpc_threadprivate_cached(
+// CHECK: load i64, i64* [[RED_SIZE1]]
// CHECK: call void [[OMP_COMB1]](
// CHECK: ret void
@@ -196,26 +197,20 @@ sum = 0.0;
// CHECK: ret void
// CHECK: define internal void @[[RED_INIT4]](i8* %0)
-// CHECK: call i8* @__kmpc_threadprivate_cached(
+// CHECK: load i64, i64* [[RED_SIZE2]]
// CHECK: store float 0.000000e+00, float* %
// CHECK: ret void
// CHECK: define internal void @[[RED_COMB4]](i8* %0, i8* %1)
-// CHECK: call i8* @__kmpc_threadprivate_cached(
+// CHECK: load i64, i64* [[RED_SIZE2]]
// CHECK: fadd float %
// CHECK: store float %{{.+}}, float* %
// CHECK: ret void
-// CHECK-NOT: call i8* @__kmpc_threadprivate_cached(
// CHECK: call i8* @__kmpc_task_reduction_get_th_data(
-// CHECK: call i8* @__kmpc_threadprivate_cached(
-// CHECK: call i8* @__kmpc_threadprivate_cached(
// CHECK: call i8* @__kmpc_task_reduction_get_th_data(
-// CHECK-NOT: call i8* @__kmpc_threadprivate_cached(
// CHECK: call i8* @__kmpc_task_reduction_get_th_data(
-// CHECK: call i8* @__kmpc_threadprivate_cached(
// CHECK: call i8* @__kmpc_task_reduction_get_th_data(
-// CHECK-NOT: call i8* @__kmpc_threadprivate_cached(
// CHECK-DAG: distinct !DISubprogram(linkageName: "[[TASK]]", scope: !
// CHECK-DAG: !DISubprogram(linkageName: "[[RED_INIT1]]"
OpenPOWER on IntegriCloud