diff options
author | Alexander Musman <alexander.musman@gmail.com> | 2014-12-15 07:07:06 +0000 |
---|---|---|
committer | Alexander Musman <alexander.musman@gmail.com> | 2014-12-15 07:07:06 +0000 |
commit | c638868bdf239402120b2dc83c6ea0fc3bd0fac8 (patch) | |
tree | 0ef5c973d8773109715a9ab1ee6d442716c61010 /clang/lib/CodeGen/CodeGenFunction.h | |
parent | ecabbc52d51a737ae9964190933c7a0abcff3b21 (diff) | |
download | llvm-c638868bdf239402120b2dc83c6ea0fc3bd0fac8.zip llvm-c638868bdf239402120b2dc83c6ea0fc3bd0fac8.tar.gz llvm-c638868bdf239402120b2dc83c6ea0fc3bd0fac8.tar.bz2 |
First patch with codegen of the 'omp for' directive. It implements
the simplest case, which is used when no chunk_size is specified in
the schedule(static) or no 'schedule' clause is specified - the
iteration space is divided by the library into chunks that are
approximately equal in size, and at most one chunk is distributed
to each thread. In this case, we do not need an outer loop in each
thread - each thread requests once which iterations range it should
handle (using __kmpc_for_static_init runtime call) and then runs the
inner loop on this range.
Differential Revision: http://reviews.llvm.org/D5865
llvm-svn: 224233
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 6c61df7..8a8827b 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -2043,12 +2043,17 @@ public: void EmitOMPTargetDirective(const OMPTargetDirective &S); void EmitOMPTeamsDirective(const OMPTeamsDirective &S); - /// Helpers for 'omp simd' directive. +private: + + /// Helpers for the OpenMP loop directives. void EmitOMPLoopBody(const OMPLoopDirective &Directive, bool SeparateIter = false); void EmitOMPInnerLoop(const OMPLoopDirective &S, OMPPrivateScope &LoopScope, bool SeparateIter = false); void EmitOMPSimdFinal(const OMPLoopDirective &S); + void EmitOMPWorksharingLoop(const OMPLoopDirective &S); + +public: //===--------------------------------------------------------------------===// // LValue Expression Emission |