FLANG
Fortran::lower::omp::ClauseProcessor Class Reference

#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 processCancelDirectiveName (mlir::omp::CancelDirectiveNameClauseOps &result) const
bool processCollapse (mlir::Location currentLocation, lower::pft::Evaluation &eval, mlir::omp::LoopRelatedClauseOps &loopResult, mlir::omp::CollapseClauseOps &collapseResult, 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 processExclusive (mlir::Location currentLocation, mlir::omp::ExclusiveClauseOps &result) const
bool processFilter (lower::StatementContext &stmtCtx, mlir::omp::FilterClauseOps &result) const
bool processFinal (lower::StatementContext &stmtCtx, mlir::omp::FinalClauseOps &result) const
bool processGrainsize (lower::StatementContext &stmtCtx, mlir::omp::GrainsizeClauseOps &result) const
bool processHasDeviceAddr (lower::StatementContext &stmtCtx, mlir::omp::HasDeviceAddrClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &hasDeviceSyms) const
bool processHint (mlir::omp::HintClauseOps &result) const
bool processInclusive (mlir::Location currentLocation, mlir::omp::InclusiveClauseOps &result) const
bool processMergeable (mlir::omp::MergeableClauseOps &result) const
bool processNowait (mlir::omp::NowaitClauseOps &result) const
bool processNumTasks (lower::StatementContext &stmtCtx, mlir::omp::NumTasksClauseOps &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 processTileSizes (lower::pft::Evaluation &eval, mlir::omp::LoopNestOperands &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 processDefaultMap (lower::StatementContext &stmtCtx, DefaultMapsTy &result) const
bool processDepend (lower::SymMap &symMap, lower::StatementContext &stmtCtx, mlir::omp::DependClauseOps &result) const
bool processEnter (llvm::SmallVectorImpl< DeclareTargetCaptureInfo > &result) const
bool processIf (omp::clause::If::DirectiveNameModifier directiveName, mlir::omp::IfClauseOps &result) const
bool processInReduction (mlir::Location currentLocation, mlir::omp::InReductionClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &outReductionSyms) const
bool processIsDevicePtr (mlir::omp::IsDevicePtrClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &isDeviceSyms) const
bool processLinear (mlir::omp::LinearClauseOps &result) const
bool processLink (llvm::SmallVectorImpl< DeclareTargetCaptureInfo > &result) const
bool processMap (mlir::Location currentLocation, lower::StatementContext &stmtCtx, mlir::omp::MapClauseOps &result, llvm::omp::Directive directive=llvm::omp::OMPD_unknown, 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 processTaskReduction (mlir::Location currentLocation, mlir::omp::TaskReductionClauseOps &result, llvm::SmallVectorImpl< const semantics::Symbol * > &outReductionSyms) const
bool processTo (llvm::SmallVectorImpl< DeclareTargetCaptureInfo > &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

Detailed Description

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.


The documentation for this class was generated from the following files: