ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
omp_lowering.h File Reference
#include "astQuery.h"
Include dependency graph for omp_lowering.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  OmpSupport::translationDriver
 A driver to traverse AST trees and invoke individual translators for OpenMP constructs, (not in use) Postorder is preferred. More...
 

Namespaces

 OmpSupport
 

Constant Groups

 OmpSupport
 

Macros

#define OMP_LOWERING_H
 

Typedefs

typedef std::map< const
SgVariableSymbol
*, SgVariableSymbol * > 
OmpSupport::VariableSymbolMap_t
 

Enumerations

enum  OmpSupport::omp_rtl_enum {
  OmpSupport::e_gomp,
  OmpSupport::e_omni,
  OmpSupport::e_last_rtl
}
 The type of target runtime libraries (not yet in use) More...
 

Functions

int OmpSupport::patchUpSharedVariables (SgFile *)
 makeDataSharingExplicit() can call some of existing functions for some work in OmpSupport namespace by Hongyi 07/16/2012 TODO: add a function within the OmpSupport namespace, the function should transform the AST, so all variables' data-sharing attributes are explicitied represented in the AST. More...
 
int OmpSupport::makeDataSharingExplicit (SgFile *)
 
void OmpSupport::commandLineProcessing (std::vector< std::string > &argvList)
 
void OmpSupport::lower_omp (SgSourceFile *)
 The top level interface to translate OpenMP directives. More...
 
void OmpSupport::insertRTLHeaders (SgSourceFile *)
 Insert #include "xxx.h", the interface of a runtime library to the compiler. More...
 
void OmpSupport::insertRTLinitAndCleanCode (SgSourceFile *)
 Insert runtime init and terminate routines to main() entry. More...
 
void OmpSupport::transOmpParallel (SgNode *node)
 Translate omp parallel. More...
 
void OmpSupport::transOmpTargetParallel (SgNode *node)
 Translate omp parallel under "omp target". More...
 
void OmpSupport::transOmpSections (SgNode *node)
 Translate omp sections. More...
 
void OmpSupport::transOmpTask (SgNode *node)
 Translate omp task. More...
 
void OmpSupport::transOmpLoop (SgNode *node)
 Translate omp for or omp do loops. More...
 
void OmpSupport::transOmpTargetLoop (SgNode *node)
 Translate omp for or omp do loops affected by the "omp target" directive, Liao 1/28/2013. More...
 
void OmpSupport::transOmpTarget (SgNode *node)
 Translate Fortran omp do. More...
 
void OmpSupport::transOmpTargetData (SgNode *node)
 Translate "omp target data". More...
 
void OmpSupport::transOmpBarrier (SgNode *node)
 Translate omp barrier. More...
 
void OmpSupport::transOmpFlush (SgNode *node)
 Translate omp flush. More...
 
void OmpSupport::transOmpTaskwait (SgNode *node)
 Translate omp taskwait. More...
 
void OmpSupport::transOmpThreadprivate (SgNode *node)
 Translate omp threadprivate. More...
 
void OmpSupport::transOmpOrdered (SgNode *node)
 Translate the ordered directive (not the ordered clause) More...
 
void OmpSupport::transOmpAtomic (SgNode *node)
 Translate omp atomic. More...
 
void OmpSupport::transOmpCritical (SgNode *node)
 Translate omp critical. More...
 
void OmpSupport::transOmpMaster (SgNode *node)
 Translate omp master. More...
 
void OmpSupport::transOmpSingle (SgNode *node)
 Translate omp single. More...
 
SgFunctionDeclarationOmpSupport::generateOutlinedTask (SgNode *node, std::string &wrapper_name, std::set< SgVariableSymbol * > &syms)
 A helper function to generate implicit or explicit task for either omp parallel or omp task. More...
 
ROSE_DLL_API void OmpSupport::transOmpVariables (SgStatement *ompStmt, SgBasicBlock *bb1, SgExpression *orig_loop_upper=NULL, bool withinAcceleratorModel=false)
 Translate OpenMP variables associated with an OpenMP pragma, such as private, firstprivate, lastprivate, reduction, etc. bb1 is the translation generated code block in which the variable handling statements will be inserted. Original loop upper bound is needed for implementing lastprivate (check if it is the last iteration). withinAcceleratorModel means if we only translate private() variables, used to support accelerator model. More...
 
ROSE_DLL_API
SgInitializedNamePtrList 
OmpSupport::collectAllClauseVariables (SgOmpClauseBodyStatement *clause_stmt)
 Collect all variables from OpenMP clauses associated with an omp statement: private, reduction, etc. More...
 
ROSE_DLL_API
SgInitializedNamePtrList 
OmpSupport::collectClauseVariables (SgOmpClauseBodyStatement *clause_stmt, const VariantT &vt)
 Collect variables from a particular type of OpenMP clauses associated with an omp statement: private, reduction, etc. More...
 
ROSE_DLL_API
SgInitializedNamePtrList 
OmpSupport::collectClauseVariables (SgOmpClauseBodyStatement *clause_stmt, const VariantVector &vvt)
 Collect variables from given types of OpenMP clauses associated with an omp statement: private, reduction, etc. More...
 
ROSE_DLL_API bool OmpSupport::isInClauseVariableList (SgInitializedName *var, SgOmpClauseBodyStatement *clause_stmt, const VariantT &vt)
 Check if a variable is in a variable list of a given clause type. More...
 
ROSE_DLL_API bool OmpSupport::isInClauseVariableList (SgInitializedName *var, SgOmpClauseBodyStatement *clause_stmt, const VariantVector &vvt)
 Check if a variable is in variable lists of given clause types. More...
 
ROSE_DLL_API int OmpSupport::replaceVariableReferences (SgNode *root, SgVariableSymbol *oldVar, SgVariableSymbol *newVar)
 Replace references to oldVar within root with references to newVar, return the number of references replaced. More...
 
ROSE_DLL_API int OmpSupport::replaceVariableReferences (SgNode *root, VariableSymbolMap_t varRemap)
 Replace variable references within root based on a map from old symbols to new symbols. More...
 
int OmpSupport::replaceVariablesWithPointerDereference (SgNode *root, std::set< SgVariableSymbol * > &vars)
 Replace all variable references in a set by pointers to the variable. More...
 
ROSE_DLL_API void OmpSupport::addClauseVariable (SgInitializedName *var, SgOmpClauseBodyStatement *clause_stmt, const VariantT &vt)
 Add a variable into a non-reduction clause of an OpenMP statement, create the clause transparently if it does not exist. More...
 
ROSE_DLL_API SgOmpVariablesClauseOmpSupport::buildOmpVariableClause (SgOmpClauseBodyStatement *clause_stmt, const VariantT &vt)
 Build a non-reduction variable clause for a given OpenMP directive. It directly returns the clause if the clause already exists. More...
 
ROSE_DLL_API bool OmpSupport::hasClause (SgOmpClauseBodyStatement *clause_stmt, const VariantT &vt)
 Check if an OpenMP statement has a clause of type vt. More...
 
ROSE_DLL_API
Rose_STL_Container
< SgOmpClause * > 
OmpSupport::getClause (SgOmpClauseBodyStatement *clause_stmt, const VariantT &vt)
 Get OpenMP clauses from an eligible OpenMP statement. More...
 
ROSE_DLL_API bool OmpSupport::useStaticSchedule (SgOmpClauseBodyStatement *omp_loop)
 Check if an omp for/do loop use static schedule or not, including: default schedule, or schedule(static[,chunk_size]) More...
 
ROSE_DLL_API
SgOmpClause::omp_reduction_operator_enum 
OmpSupport::getReductionOperationType (SgInitializedName *init_name, SgOmpClauseBodyStatement *clause_stmt)
 Return a reduction variable's reduction operation type. More...
 
ROSE_DLL_API SgExpressionOmpSupport::createInitialValueExp (SgOmpClause::omp_reduction_operator_enum r_operator)
 Create an initial value according to reduction operator type. More...
 
ROSE_DLL_API std::string OmpSupport::generateGOMPLoopStartFuncName (bool isOrdered, SgOmpClause::omp_schedule_kind_enum s_kind)
 Generate GOMP loop schedule start function's name. More...
 
ROSE_DLL_API std::string OmpSupport::generateGOMPLoopNextFuncName (bool isOrdered, SgOmpClause::omp_schedule_kind_enum s_kind)
 Generate GOMP loop schedule next function's name. More...
 
ROSE_DLL_API std::string OmpSupport::toString (SgOmpClause::omp_schedule_kind_enum s_kind)
 Convert a schedule kind enum value to a small case string. More...
 
ROSE_DLL_API int OmpSupport::patchUpPrivateVariables (SgFile *)
 Patch up private variables for omp for. The reason is that loop indices should be private by default and this function will make this explicit. More...
 
ROSE_DLL_API int OmpSupport::patchUpFirstprivateVariables (SgFile *)
 Patch up firstprivate variables for omp task. The reason is that the specification 3.0 defines rules for implicitly determined data-sharing attributes and this function will make the firstprivate variable of omp task explicit. More...
 
std::set< SgInitializedName * > OmpSupport::collectThreadprivateVariables ()
 Collect threadprivate variables within the current project, return a set to avoid duplicated elements. No input parameters are needed since it finds match from memory pools. More...
 
SgVariableDeclarationOmpSupport::buildAndInsertDeclarationForOmp (const std::string &name, SgType *type, SgInitializer *varInit, SgBasicBlock *orig_scope)
 Special handling when trying to build and insert a variable declaration into a BB within Fortran OpenMP code. More...
 
SgBasicBlockOmpSupport::getEnclosingRegionOrFuncDefinition (SgNode *)
 Find an enclosing parallel region or function definition's body. More...
 

Variables

bool OmpSupport::enable_accelerator
 
unsigned int OmpSupport::nCounter
 
omp_rtl_enum OmpSupport::rtl_type
 

Macro Definition Documentation

#define OMP_LOWERING_H

Translation (directive lowering) support for OpenMP 3.0 C/C++

Like other OpenMP related work within ROSE, all things go to the OmpSupport namespace to avoid conflicts Liao, 8/10/2009

Definition at line 12 of file omp_lowering.h.