FLANG
|
#include <Lower/OpenMP/ClauseProcessor.h>
Public Member Functions | |
ClauseProcessor (lower::AbstractConverter &converter, semantics::SemanticsContext &semaCtx, const List< Clause > &clauses) | |
bool | processBare (mlir::omp::BareClauseOps &result) const |
bool | processBind (mlir::omp::BindClauseOps &result) const |
bool | processCollapse (mlir::Location currentLocation, lower::pft::Evaluation &eval, mlir::omp::LoopRelatedClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &iv) const |
bool | processDevice (lower::StatementContext &stmtCtx, mlir::omp::DeviceClauseOps &result) const |
bool | processDeviceType (mlir::omp::DeviceTypeClauseOps &result) const |
bool | processDistSchedule (lower::StatementContext &stmtCtx, mlir::omp::DistScheduleClauseOps &result) const |
bool | processFilter (lower::StatementContext &stmtCtx, mlir::omp::FilterClauseOps &result) const |
bool | processFinal (lower::StatementContext &stmtCtx, mlir::omp::FinalClauseOps &result) const |
bool | processHasDeviceAddr (mlir::omp::HasDeviceAddrClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &isDeviceSyms) const |
bool | processHint (mlir::omp::HintClauseOps &result) const |
bool | processMergeable (mlir::omp::MergeableClauseOps &result) const |
bool | processNowait (mlir::omp::NowaitClauseOps &result) const |
bool | processNumTeams (lower::StatementContext &stmtCtx, mlir::omp::NumTeamsClauseOps &result) const |
bool | processNumThreads (lower::StatementContext &stmtCtx, mlir::omp::NumThreadsClauseOps &result) const |
bool | processOrder (mlir::omp::OrderClauseOps &result) const |
bool | processOrdered (mlir::omp::OrderedClauseOps &result) const |
bool | processPriority (lower::StatementContext &stmtCtx, mlir::omp::PriorityClauseOps &result) const |
bool | processProcBind (mlir::omp::ProcBindClauseOps &result) const |
bool | processSafelen (mlir::omp::SafelenClauseOps &result) const |
bool | processSchedule (lower::StatementContext &stmtCtx, mlir::omp::ScheduleClauseOps &result) const |
bool | processSimdlen (mlir::omp::SimdlenClauseOps &result) const |
bool | processThreadLimit (lower::StatementContext &stmtCtx, mlir::omp::ThreadLimitClauseOps &result) const |
bool | processUntied (mlir::omp::UntiedClauseOps &result) const |
bool | processDetach (mlir::omp::DetachClauseOps &result) const |
bool | processAligned (mlir::omp::AlignedClauseOps &result) const |
bool | processAllocate (mlir::omp::AllocateClauseOps &result) const |
bool | processCopyin () const |
bool | processCopyprivate (mlir::Location currentLocation, mlir::omp::CopyprivateClauseOps &result) const |
bool | processDepend (mlir::omp::DependClauseOps &result) const |
bool | processEnter (llvm::SmallVectorImpl< DeclareTargetCapturePair > &result) const |
bool | processIf (omp::clause::If::DirectiveNameModifier directiveName, mlir::omp::IfClauseOps &result) const |
bool | processIsDevicePtr (mlir::omp::IsDevicePtrClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &isDeviceSyms) const |
bool | processLink (llvm::SmallVectorImpl< DeclareTargetCapturePair > &result) const |
bool | processMap (mlir::Location currentLocation, lower::StatementContext &stmtCtx, mlir::omp::MapClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > *mapSyms=nullptr) const |
bool | processMotionClauses (lower::StatementContext &stmtCtx, mlir::omp::MapClauseOps &result) |
bool | processNontemporal (mlir::omp::NontemporalClauseOps &result) const |
bool | processReduction (mlir::Location currentLocation, mlir::omp::ReductionClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &reductionSyms) const |
bool | processTo (llvm::SmallVectorImpl< DeclareTargetCapturePair > &result) const |
bool | processUseDeviceAddr (lower::StatementContext &stmtCtx, mlir::omp::UseDeviceAddrClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &useDeviceSyms) const |
bool | processUseDevicePtr (lower::StatementContext &stmtCtx, mlir::omp::UseDevicePtrClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &useDeviceSyms) const |
template<typename... Ts> | |
void | processTODO (mlir::Location currentLocation, llvm::omp::Directive directive) const |
Class that handles the processing of OpenMP clauses.
Its process<ClauseName>()
methods perform MLIR code generation for their corresponding clause if it is present in the clause list. Otherwise, they will return false
to signal that the clause was not found.
The intended use of this class is to move clause processing outside of construct processing, since the same clauses can appear attached to different constructs and constructs can be combined, so that code duplication is minimized.
Each construct-lowering function only calls the process<ClauseName>()
methods that relate to clauses that can impact the lowering of that construct.