MLIR  16.0.0git
Public Member Functions | Friends | List of all members
mlir::detail::OpToOpPassAdaptor Class Reference

An adaptor pass used to run operation passes over nested operations. More...

#include "Pass/PassDetail.h"

+ Inheritance diagram for mlir::detail::OpToOpPassAdaptor:
+ Collaboration diagram for mlir::detail::OpToOpPassAdaptor:

Public Member Functions

 OpToOpPassAdaptor (OpPassManager &&mgr)
 
 OpToOpPassAdaptor (const OpToOpPassAdaptor &rhs)=default
 
void runOnOperation (bool verifyPasses)
 Run the held pipeline over all operations. More...
 
void runOnOperation () override
 The polymorphic API that runs the pass over the currently held operation. More...
 
LogicalResult tryMergeInto (MLIRContext *ctx, OpToOpPassAdaptor &rhs)
 Try to merge the current pass adaptor into 'rhs'. More...
 
MutableArrayRef< OpPassManagergetPassManagers ()
 Returns the pass managers held by this adaptor. More...
 
void getDependentDialects (DialectRegistry &dialects) const override
 Populate the set of dependent dialects for the passes in the current adaptor. More...
 
MutableArrayRef< SmallVector< OpPassManager, 1 > > getParallelPassManagers ()
 Return the async pass managers held by this parallel adaptor. More...
 
std::string getAdaptorName ()
 Returns the adaptor pass name. More...
 
- Public Member Functions inherited from mlir::Pass
virtual ~Pass ()=default
 
TypeID getTypeID () const
 Returns the unique identifier that corresponds to this pass. More...
 
const PassInfolookupPassInfo () const
 Returns the pass info for this pass, or null if unknown. More...
 
virtual StringRef getArgument () const
 Return the command line argument used when registering this pass. More...
 
virtual StringRef getDescription () const
 Return the command line description used when registering this pass. More...
 
Optional< StringRef > getOpName () const
 Returns the name of the operation that this pass operates on, or None if this is a generic OperationPass. More...
 
virtual LogicalResult initializeOptions (StringRef options)
 Attempt to initialize the options of this pass from the given string. More...
 
void printAsTextualPipeline (raw_ostream &os)
 Prints out the pass in the textual representation of pipelines. More...
 
ArrayRef< Statistic * > getStatistics () const
 Returns the main statistics for this pass instance. More...
 
MutableArrayRef< Statistic * > getStatistics ()
 
const PassgetThreadingSibling () const
 Returns the thread sibling of this pass. More...
 
const PassgetThreadingSiblingOrThis () const
 Returns the thread sibling of this pass, or the pass itself it has no sibling. More...
 

Friends

class mlir::PassManager
 

Additional Inherited Members

- Static Public Member Functions inherited from mlir::PassWrapper< OpToOpPassAdaptor, OperationPass<> >
static bool classof (const Pass *pass)
 Support isa/dyn_cast functionality for the derived pass class. More...
 
- Static Public Member Functions inherited from mlir::Pass
static const PassInfolookupPassInfo (StringRef passArg)
 Returns the pass info for the specified pass class or null if unknown. More...
 
- Protected Member Functions inherited from mlir::PassWrapper< OpToOpPassAdaptor, OperationPass<> >
 PassWrapper ()
 
 PassWrapper (const PassWrapper &)=default
 
StringRef getName () const override
 Returns the derived pass name. More...
 
std::unique_ptr< PassclonePass () const override
 A clone method to create a copy of this pass. More...
 
- Protected Member Functions inherited from mlir::OperationPass<>
 OperationPass (TypeID passID)
 
 OperationPass (const OperationPass &)=default
 
bool canScheduleOn (RegisteredOperationName opName) const final
 Indicate if the current pass can be scheduled on the given operation type. More...
 
void getOperation ()
 Return the current operation being transformed. More...
 
AnalysisT & getAnalysis ()
 Query an analysis for the current operation of the specific derived operation type. More...
 
- Protected Member Functions inherited from mlir::Pass
 Pass (TypeID passID, Optional< StringRef > opName=llvm::None)
 
 Pass (const Pass &other)
 
detail::PassExecutionStategetPassState ()
 Returns the current pass state. More...
 
MLIRContextgetContext ()
 Return the MLIR context for the current operation being transformed. More...
 
virtual LogicalResult initialize (MLIRContext *context)
 Initialize any complex state necessary for running this pass. More...
 
LogicalResult runPipeline (OpPassManager &pipeline, Operation *op)
 Schedule an arbitrary pass pipeline on the provided operation. More...
 
std::unique_ptr< Passclone () const
 A clone method to create a copy of this pass. More...
 
OperationgetOperation ()
 Return the current operation being transformed. More...
 
void signalPassFailure ()
 Signal that some invariant was broken when running. More...
 
template<typename AnalysisT >
AnalysisT & getAnalysis ()
 Query an analysis for the current ir unit. More...
 
template<typename AnalysisT , typename OpT >
AnalysisT & getAnalysis ()
 Query an analysis for the current ir unit of a specific derived operation type. More...
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedAnalysis ()
 Query a cached instance of an analysis for the current ir unit if one exists. More...
 
void markAllAnalysesPreserved ()
 Mark all analyses as preserved. More...
 
template<typename... AnalysesT>
void markAnalysesPreserved ()
 Mark the provided analyses as preserved. More...
 
void markAnalysesPreserved (TypeID id)
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedParentAnalysis (Operation *parent)
 Returns the analysis for the given parent operation if it exists. More...
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedParentAnalysis ()
 Returns the analysis for the parent operation if it exists. More...
 
template<typename AnalysisT >
Optional< std::reference_wrapper< AnalysisT > > getCachedChildAnalysis (Operation *child)
 Returns the analysis for the given child operation if it exists. More...
 
template<typename AnalysisT >
AnalysisT & getChildAnalysis (Operation *child)
 Returns the analysis for the given child operation, or creates it if it doesn't exist. More...
 
template<typename AnalysisT , typename OpTy >
AnalysisT & getChildAnalysis (OpTy child)
 Returns the analysis for the given child operation of specific derived operation type, or creates it if it doesn't exist. More...
 
AnalysisManager getAnalysisManager ()
 Returns the current analysis manager. More...
 
void copyOptionValuesFrom (const Pass *other)
 Copy the option values from 'other', which is another instance of this pass. More...
 
- Static Protected Member Functions inherited from mlir::OperationPass<>
static bool classof (const Pass *pass)
 Support isa/dyn_cast functionality. More...
 

Detailed Description

An adaptor pass used to run operation passes over nested operations.

Definition at line 22 of file PassDetail.h.

Constructor & Destructor Documentation

◆ OpToOpPassAdaptor() [1/2]

OpToOpPassAdaptor::OpToOpPassAdaptor ( OpPassManager &&  mgr)

Definition at line 564 of file Pass.cpp.

◆ OpToOpPassAdaptor() [2/2]

mlir::detail::OpToOpPassAdaptor::OpToOpPassAdaptor ( const OpToOpPassAdaptor rhs)
default

Member Function Documentation

◆ getAdaptorName()

std::string OpToOpPassAdaptor::getAdaptorName ( )

Returns the adaptor pass name.

Definition at line 637 of file Pass.cpp.

References mlir::OpPassManager::getOpAnchorName().

Referenced by getParallelPassManagers().

◆ getDependentDialects()

void OpToOpPassAdaptor::getDependentDialects ( DialectRegistry dialects) const
overridevirtual

Populate the set of dependent dialects for the passes in the current adaptor.

Reimplemented from mlir::Pass.

Definition at line 568 of file Pass.cpp.

References mlir::OpPassManager::getDependentDialects().

Referenced by getPassManagers().

◆ getParallelPassManagers()

MutableArrayRef<SmallVector<OpPassManager, 1> > mlir::detail::OpToOpPassAdaptor::getParallelPassManagers ( )
inline

Return the async pass managers held by this parallel adaptor.

Definition at line 51 of file PassDetail.h.

References getAdaptorName().

Referenced by prepareStatistics().

◆ getPassManagers()

MutableArrayRef<OpPassManager> mlir::detail::OpToOpPassAdaptor::getPassManagers ( )
inline

Returns the pass managers held by this adaptor.

Definition at line 44 of file PassDetail.h.

References getDependentDialects().

Referenced by prepareStatistics().

◆ runOnOperation() [1/2]

void OpToOpPassAdaptor::runOnOperation ( bool  verifyPasses)

Run the held pipeline over all operations.

Run the held pipeline over all nested operations.

Definition at line 653 of file Pass.cpp.

References mlir::failed(), findPassManagerFor(), mlir::Operation::getContext(), mlir::Operation::getName(), mlir::AnalysisManager::getPassInstrumentor(), and mlir::AnalysisManager::nest().

◆ runOnOperation() [2/2]

void OpToOpPassAdaptor::runOnOperation ( )
overridevirtual

The polymorphic API that runs the pass over the currently held operation.

Implements mlir::Pass.

Definition at line 647 of file Pass.cpp.

◆ tryMergeInto()

LogicalResult OpToOpPassAdaptor::tryMergeInto ( MLIRContext ctx,
OpToOpPassAdaptor rhs 
)

Try to merge the current pass adaptor into 'rhs'.

This will try to append the pass managers of this adaptor into those within rhs, or return failure if merging isn't possible. The main situation in which merging is not possible is if one of the adaptors has an any pipeline that is not compatible with a pass manager in the other adaptor. For example, if this adaptor has a func.func pipeline and rhs has an any pipeline that operates on FunctionOpInterface. In this situation the pipelines have a conflict (they both want to run on the same operations), so we can't merge.

Definition at line 573 of file Pass.cpp.

Friends And Related Function Documentation

◆ mlir::PassManager

friend class mlir::PassManager
friend

Definition at line 89 of file PassDetail.h.


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