MLIR
20.0.0git
|
Namespaces | |
detail | |
gpu | |
Classes | |
class | StructuredOpPredicateOpTrait |
struct | TileSizesSpec |
struct | NumThreadsSpec |
class | AtMostOneOpMatcherOpTrait |
class | SingleOpMatcherOpTrait |
class | SingleValueMatcherOpTrait |
class | TransformOptions |
Options controlling the application of transform operations by the TransformState. More... | |
class | TransformState |
The state maintained across applications of various ops implementing the TransformOpInterface. More... | |
class | TransformResults |
Local mapping between values defined by a specific op implementing the TransformOpInterface and the payload IR ops they correspond to. More... | |
struct | TrackingListenerConfig |
A configuration object for customizing a TrackingListener . More... | |
class | TrackingListener |
A listener that updates a TransformState based on IR modifications. More... | |
class | ErrorCheckingTrackingListener |
A specialized listener that keeps track of cases in which no replacement payload could be found. More... | |
class | TransformRewriter |
This is a special rewriter to be used in transform op implementations, providing additional helper functions to update the transform state, etc. More... | |
class | PossibleTopLevelTransformOpTrait |
This trait is supposed to be attached to Transform dialect operations that can be standalone top-level transforms. More... | |
class | TransformEachOpTrait |
Trait implementing the TransformOpInterface for operations applying a transformation to a single operation handle and producing an arbitrary number of handles and parameter values. More... | |
struct | TransformMappingResource |
Side effect resource corresponding to the mapping between Transform IR values and Payload IR operations. More... | |
struct | PayloadIRResource |
Side effect resource corresponding to the Payload IR itself. More... | |
class | FunctionalStyleTransformOpTrait |
Trait implementing the MemoryEffectOpInterface for operations that "consume" their operands and produce new results. More... | |
class | NavigationTransformOpTrait |
Trait implementing the MemoryEffectOpInterface for operations that use their operands without consuming and without modifying the Payload IR to potentially produce new handles. More... | |
class | ParamProducerTransformOpTrait |
Trait implementing the MemoryEffectsOpInterface for operations that produce transform dialect parameters. More... | |
class | ReportTrackingListenerFailuresOpTrait |
TrackingListener failures are reported only for ops that have this trait. More... | |
class | ApplyToEachResultList |
A list of results of applying a transform op with ApplyEachOpTrait to a single payload operation, co-indexed with the results of the transform op. More... | |
class | TransformDialectData |
Base class for additional data owned by the Transform dialect. More... | |
class | TransformDialectExtension |
Base class for extensions of the Transform dialect that supports injecting operations into the Transform dialect at load time. More... | |
class | BuildOnly |
A wrapper for transform dialect extensions that forces them to be constructed in the build-only mode. More... | |
class | PDLMatchHooks |
PDL constraint callbacks that can be used by the PDL extension of the Transform dialect. More... | |
Typedefs | |
using | Param = Attribute |
using | MappedValue = llvm::PointerUnion< Operation *, Param, Value > |
using | ApplyToEachResult = MappedValue |
A single result of applying a transform op with ApplyEachOpTrait to a single payload operation. More... | |
using | SequenceBodyBuilderFn = ::llvm::function_ref< void(::mlir::OpBuilder &, ::mlir::Location, ::mlir::BlockArgument)> |
A builder function that populates the body of a SequenceOp. More... | |
using | SequenceBodyBuilderArgsFn = ::llvm::function_ref< void(::mlir::OpBuilder &, ::mlir::Location, ::mlir::BlockArgument, ::mlir::ValueRange)> |
Functions | |
DiagnosedSilenceableFailure | tileToForallOpImpl (RewriterBase &rewriter, transform::TransformState &state, TransformOpInterface transformOp, Operation *target, ArrayRef< OpFoldResult > mixedNumThreads, ArrayRef< OpFoldResult > mixedTileSizes, std::optional< ArrayAttr > mapping, scf::SCFTilingResult &tilingResult) |
Implementation of tiling operations using scf.forall . More... | |
void | registerDebugExtension (DialectRegistry &dialectRegistry) |
Registers the debug extension of the Transform dialect in the given registry. More... | |
ParseResult | parseTransformMatchDims (OpAsmParser &parser, DenseI64ArrayAttr &rawDimList, UnitAttr &isInverted, UnitAttr &isAll) |
Parses a positional index specification for transform match operations. More... | |
void | printTransformMatchDims (OpAsmPrinter &printer, Operation *op, DenseI64ArrayAttr rawDimList, UnitAttr isInverted, UnitAttr isAll) |
Prints a positional index specification for transform match operations. More... | |
LogicalResult | verifyTransformMatchDimsOp (Operation *op, ArrayRef< int64_t > raw, bool inverted, bool all) |
Checks if the positional specification defined is valid and reports errors otherwise. More... | |
DiagnosedSilenceableFailure | expandTargetSpecification (Location loc, bool isAll, bool isInverted, ArrayRef< int64_t > rawList, int64_t maxNumber, SmallVectorImpl< int64_t > &result) |
Populates result with the positional identifiers relative to maxNumber . More... | |
LogicalResult | applyTransforms (Operation *payloadRoot, TransformOpInterface transform, const RaggedArray< MappedValue > &extraMapping={}, const TransformOptions &options=TransformOptions(), bool enforceToplevelTransformOp=true, function_ref< void(TransformState &)> stateInitializer=nullptr, function_ref< LogicalResult(TransformState &)> stateExporter=nullptr) |
Entry point to the Transform dialect infrastructure. More... | |
void | consumesHandle (MutableArrayRef< OpOperand > handles, SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
Populates effects with the memory effects indicating the operation on the given handle value: More... | |
void | producesHandle (ResultRange handles, SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
void | producesHandle (MutableArrayRef< BlockArgument > handles, SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
void | onlyReadsHandle (MutableArrayRef< OpOperand > handles, SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
bool | isHandleConsumed (Value handle, transform::TransformOpInterface transform) |
Checks whether the transform op consumes the given handle. More... | |
void | modifiesPayload (SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
Populates effects with the memory effects indicating the access to payload IR resource. More... | |
void | onlyReadsPayload (SmallVectorImpl< MemoryEffects::EffectInstance > &effects) |
bool | doesModifyPayload (transform::TransformOpInterface transform) |
Checks whether the transform op modifies the payload. More... | |
bool | doesReadPayload (transform::TransformOpInterface transform) |
Checks whether the transform op reads the payload. More... | |
void | getConsumedBlockArguments (Block &block, llvm::SmallDenseSet< unsigned > &consumedArguments) |
Populates consumedArguments with positions of block arguments that are consumed by the operations in the block . More... | |
void | registerIRDLExtension (DialectRegistry &dialectRegistry) |
Registers the IRDL extension of the Transform dialect in the given registry. More... | |
void | registerLoopExtension (DialectRegistry &dialectRegistry) |
Registers the loop extension of the Transform dialect in the given registry. More... | |
void | registerPDLExtension (DialectRegistry &dialectRegistry) |
Registers the PDL extension of the Transform dialect in the given registry. More... | |
LogicalResult | applyTransformNamedSequence (Operation *payload, Operation *transformRoot, ModuleOp transformModule, const TransformOptions &options) |
Standalone util to apply the named sequence transformRoot to payload IR. More... | |
LogicalResult | applyTransformNamedSequence (RaggedArray< MappedValue > bindings, TransformOpInterface transformRoot, ModuleOp transformModule, const TransformOptions &options) |
void | printPackedOrDynamicIndexList (OpAsmPrinter &printer, Operation *op, Value packed, Type packedType, OperandRange values, TypeRange valueTypes, DenseI64ArrayAttr integers) |
Printer hook for custom directive in assemblyFormat. More... | |
void | printPackedOrDynamicIndexList (OpAsmPrinter &printer, Operation *op, Value packed, OperandRange values, DenseI64ArrayAttr integers) |
ParseResult | parsePackedOrDynamicIndexList (OpAsmParser &parser, std::optional< OpAsmParser::UnresolvedOperand > &packed, Type &packedType, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &values, SmallVectorImpl< Type > *valueTypes, DenseI64ArrayAttr &integers) |
Parser hook for custom directive in assemblyFormat. More... | |
ParseResult | parsePackedOrDynamicIndexList (OpAsmParser &parser, std::optional< OpAsmParser::UnresolvedOperand > &packed, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &values, DenseI64ArrayAttr &integers) |
using mlir::transform::ApplyToEachResult = typedef MappedValue |
A single result of applying a transform op with ApplyEachOpTrait
to a single payload operation.
Definition at line 1394 of file TransformInterfaces.h.
using mlir::transform::MappedValue = typedef llvm::PointerUnion<Operation *, Param, Value> |
Definition at line 30 of file TransformInterfaces.h.
using mlir::transform::Param = typedef Attribute |
Definition at line 29 of file TransformInterfaces.h.
using mlir::transform::SequenceBodyBuilderArgsFn = typedef ::llvm::function_ref<void(::mlir::OpBuilder &, ::mlir::Location, ::mlir::BlockArgument, ::mlir::ValueRange)> |
Definition at line 37 of file TransformOps.h.
using mlir::transform::SequenceBodyBuilderFn = typedef ::llvm::function_ref<void( ::mlir::OpBuilder &, ::mlir::Location, ::mlir::BlockArgument)> |
A builder function that populates the body of a SequenceOp.
Definition at line 35 of file TransformOps.h.
LogicalResult mlir::transform::applyTransformNamedSequence | ( | Operation * | payload, |
Operation * | transformRoot, | ||
ModuleOp | transformModule, | ||
const TransformOptions & | options | ||
) |
Standalone util to apply the named sequence transformRoot
to payload
IR.
This is done in 2 steps:
transformModule
is provided and is not nested under transformRoot
, it will be "linked into" the IR containing transformRoot
to resolve undefined named sequences.transformRoot
are applied to payload
, assuming the named sequence has a single argument handle that will be associated with payload
on run. Definition at line 191 of file TransformInterpreterUtils.cpp.
References options, and mlir::RaggedArray< T >::push_back().
Referenced by mlirTransformApplyNamedSequence().
LogicalResult mlir::transform::applyTransformNamedSequence | ( | RaggedArray< MappedValue > | bindings, |
TransformOpInterface | transformRoot, | ||
ModuleOp | transformModule, | ||
const TransformOptions & | options | ||
) |
Definition at line 201 of file TransformInterpreterUtils.cpp.
References applyTransforms(), mlir::RaggedArray< T >::at(), DBGS, mlir::Operation::emitError(), mlir::RaggedArray< T >::empty(), mlir::SymbolTable::getNearestSymbolTable(), mlir::transform::detail::mergeSymbolsInto(), options, and mlir::RaggedArray< T >::removeFront().
LogicalResult mlir::transform::applyTransforms | ( | Operation * | payloadRoot, |
TransformOpInterface | transform, | ||
const RaggedArray< MappedValue > & | extraMapping = {} , |
||
const TransformOptions & | options = TransformOptions() , |
||
bool | enforceToplevelTransformOp = true , |
||
function_ref< void(TransformState &)> | stateInitializer = nullptr , |
||
function_ref< LogicalResult(TransformState &)> | stateExporter = nullptr |
||
) |
Entry point to the Transform dialect infrastructure.
Applies the transformation specified by transform
to payload IR contained in payloadRoot
. The transform
operation may contain other operations that will be executed following the internal logic of the operation. It must have the PossibleTopLevelTransformOp
trait and not have any operands. This function internally keeps track of the transformation state.
Definition at line 1997 of file TransformInterfaces.cpp.
References mlir::transform::detail::verifyPossibleTopLevelTransformOpTrait().
Referenced by applyTransformNamedSequence().
void mlir::transform::consumesHandle | ( | MutableArrayRef< OpOperand > | handles, |
SmallVectorImpl< MemoryEffects::EffectInstance > & | effects | ||
) |
Populates effects
with the memory effects indicating the operation on the given handle value:
Definition at line 1796 of file TransformInterfaces.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, BaseEffect >::get(), and mlir::SideEffects::Resource::Base< TransformMappingResource >::get().
Referenced by mlir::transform::FunctionalStyleTransformOpTrait< OpTy >::getEffects().
bool mlir::transform::doesModifyPayload | ( | transform::TransformOpInterface | transform | ) |
Checks whether the transform op modifies the payload.
Definition at line 1868 of file TransformInterfaces.cpp.
bool mlir::transform::doesReadPayload | ( | transform::TransformOpInterface | transform | ) |
Checks whether the transform op reads the payload.
Definition at line 1875 of file TransformInterfaces.cpp.
DiagnosedSilenceableFailure mlir::transform::expandTargetSpecification | ( | Location | loc, |
bool | isAll, | ||
bool | isInverted, | ||
ArrayRef< int64_t > | rawList, | ||
int64_t | maxNumber, | ||
SmallVectorImpl< int64_t > & | result | ||
) |
Populates result
with the positional identifiers relative to maxNumber
.
If isAll
is set, the result will contain all numbers from 0
to maxNumber - 1
inclusive regardless of rawList
. Otherwise, negative values from rawList
are are interpreted as counting backwards from maxNumber
, i.e., -1
is interpreted a maxNumber - 1
, while positive numbers remain as is. If isInverted
is set, populates result
with those values from the 0
to maxNumber - 1
inclusive range that don't appear in rawList
. If rawList
contains values that are greater than or equal to maxNumber
or less than -maxNumber
, produces a silenceable error at the given location. maxNumber
must be positive. If rawList
contains duplicate numbers or numbers that become duplicate after negative value remapping, emits a silenceable error.
Definition at line 103 of file MatchInterfaces.cpp.
References mlir::emitSilenceableFailure(), and mlir::DiagnosedSilenceableFailure::success().
void mlir::transform::getConsumedBlockArguments | ( | Block & | block, |
llvm::SmallDenseSet< unsigned > & | consumedArguments | ||
) |
Populates consumedArguments
with positions of block
arguments that are consumed by the operations in the block
.
Referenced by inferSideEffectAnnotations(), and verifyFunctionLikeConsumeAnnotations().
bool mlir::transform::isHandleConsumed | ( | Value | handle, |
transform::TransformOpInterface | transform | ||
) |
Checks whether the transform op consumes the given handle.
Definition at line 1817 of file TransformInterfaces.cpp.
Referenced by mlir::transform::TransformState::applyTransform(), and isValueUsePotentialConsumer().
void mlir::transform::modifiesPayload | ( | SmallVectorImpl< MemoryEffects::EffectInstance > & | effects | ) |
Populates effects
with the memory effects indicating the access to payload IR resource.
Definition at line 1857 of file TransformInterfaces.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, BaseEffect >::get(), and mlir::SideEffects::Resource::Base< PayloadIRResource >::get().
Referenced by mlir::transform::FunctionalStyleTransformOpTrait< OpTy >::getEffects().
void mlir::transform::onlyReadsHandle | ( | MutableArrayRef< OpOperand > | handles, |
SmallVectorImpl< MemoryEffects::EffectInstance > & | effects | ||
) |
Definition at line 1848 of file TransformInterfaces.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, BaseEffect >::get(), and mlir::SideEffects::Resource::Base< TransformMappingResource >::get().
Referenced by mlir::transform::AtMostOneOpMatcherOpTrait< OpTy >::getEffects(), mlir::transform::SingleValueMatcherOpTrait< OpTy >::getEffects(), mlir::transform::NavigationTransformOpTrait< OpTy >::getEffects(), mlir::transform::detail::getParamProducerTransformOpTraitEffects(), and mlir::transform::detail::getPotentialTopLevelEffects().
void mlir::transform::onlyReadsPayload | ( | SmallVectorImpl< MemoryEffects::EffectInstance > & | effects | ) |
Definition at line 1863 of file TransformInterfaces.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, BaseEffect >::get(), and mlir::SideEffects::Resource::Base< PayloadIRResource >::get().
Referenced by mlir::transform::AtMostOneOpMatcherOpTrait< OpTy >::getEffects(), mlir::transform::SingleValueMatcherOpTrait< OpTy >::getEffects(), mlir::transform::NavigationTransformOpTrait< OpTy >::getEffects(), and mlir::transform::detail::getParamProducerTransformOpTraitEffects().
|
inline |
Definition at line 57 of file Utils.h.
References parsePackedOrDynamicIndexList().
ParseResult mlir::transform::parsePackedOrDynamicIndexList | ( | OpAsmParser & | parser, |
std::optional< OpAsmParser::UnresolvedOperand > & | packed, | ||
Type & | packedType, | ||
SmallVectorImpl< OpAsmParser::UnresolvedOperand > & | values, | ||
SmallVectorImpl< Type > * | valueTypes, | ||
DenseI64ArrayAttr & | integers | ||
) |
Parser hook for custom directive in assemblyFormat.
custom<PackedOrDynamicIndexList>($packed, type($packed), $values, type($values), $integers)
See printPackedOrDynamicIndexList
for details.
Definition at line 33 of file Utils.cpp.
References mlir::AsmParser::getBuilder(), mlir::Builder::getDenseI64ArrayAttr(), mlir::AsmParser::parseColonType(), mlir::parseDynamicIndexList(), mlir::AsmParser::parseLParen(), mlir::OpAsmParser::parseOperand(), mlir::AsmParser::parseOptionalStar(), and mlir::AsmParser::parseRParen().
Referenced by parsePackedOrDynamicIndexList().
ParseResult mlir::transform::parseTransformMatchDims | ( | OpAsmParser & | parser, |
DenseI64ArrayAttr & | rawDimList, | ||
UnitAttr & | isInverted, | ||
UnitAttr & | isAll | ||
) |
Parses a positional index specification for transform match operations.
The following forms are accepted:
all
: sets isAll
and returns;rawDimList
with the values;except
(
comma-separated-integer-list )
: populates rawDimList
with the values and sets isInverted
. Definition at line 23 of file MatchInterfaces.cpp.
References mlir::AsmParser::getBuilder(), mlir::Builder::getDenseI64ArrayAttr(), mlir::Builder::getUnitAttr(), kDimAllKeyword, kDimExceptKeyword, mlir::AsmParser::parseCommaSeparatedList(), mlir::AsmParser::parseInteger(), mlir::AsmParser::parseLParen(), mlir::AsmParser::parseOptionalKeyword(), and mlir::AsmParser::parseRParen().
|
inline |
Definition at line 40 of file Utils.h.
References printPackedOrDynamicIndexList().
void mlir::transform::printPackedOrDynamicIndexList | ( | OpAsmPrinter & | printer, |
Operation * | op, | ||
Value | packed, | ||
Type | packedType, | ||
OperandRange | values, | ||
TypeRange | valueTypes, | ||
DenseI64ArrayAttr | integers | ||
) |
Printer hook for custom directive in assemblyFormat.
custom<PackedOrDynamicIndexList>($packed, type($packed), $values, type($values), $integers)
where values
are variadic Index values, integers
is an I64ArrayAttr
and packed
is a single transform dialect handle who's mapped payload ops have a single Index result and represent the index list. Either packed
or the other two parameters may be specified.
This allows idiomatic printing of mixed value and integer attributes in a list or with a single handle. E.g., [arg0 : !transform.any_op, 7, 42, arg42 : !transform.param<i64>]
or just h : !transform.any_op
.
Definition at line 17 of file Utils.cpp.
References mlir::printDynamicIndexList().
Referenced by printPackedOrDynamicIndexList().
void mlir::transform::printTransformMatchDims | ( | OpAsmPrinter & | printer, |
Operation * | op, | ||
DenseI64ArrayAttr | rawDimList, | ||
UnitAttr | isInverted, | ||
UnitAttr | isAll | ||
) |
Prints a positional index specification for transform match operations.
Definition at line 61 of file MatchInterfaces.cpp.
References mlir::detail::DenseArrayAttrImpl< T >::asArrayRef(), mlir::AsmPrinter::getStream(), kDimAllKeyword, and kDimExceptKeyword.
void mlir::transform::producesHandle | ( | MutableArrayRef< BlockArgument > | handles, |
SmallVectorImpl< MemoryEffects::EffectInstance > & | effects | ||
) |
Definition at line 1837 of file TransformInterfaces.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, BaseEffect >::get(), and mlir::SideEffects::Resource::Base< TransformMappingResource >::get().
void mlir::transform::producesHandle | ( | ResultRange | handles, |
SmallVectorImpl< MemoryEffects::EffectInstance > & | effects | ||
) |
Definition at line 1826 of file TransformInterfaces.cpp.
References mlir::SideEffects::Effect::Base< DerivedEffect, BaseEffect >::get(), and mlir::SideEffects::Resource::Base< TransformMappingResource >::get().
Referenced by mlir::transform::AtMostOneOpMatcherOpTrait< OpTy >::getEffects(), mlir::transform::SingleValueMatcherOpTrait< OpTy >::getEffects(), mlir::transform::FunctionalStyleTransformOpTrait< OpTy >::getEffects(), mlir::transform::NavigationTransformOpTrait< OpTy >::getEffects(), mlir::transform::detail::getParamProducerTransformOpTraitEffects(), and mlir::transform::detail::getPotentialTopLevelEffects().
void mlir::transform::registerDebugExtension | ( | DialectRegistry & | dialectRegistry | ) |
Registers the debug extension of the Transform dialect in the given registry.
Definition at line 34 of file DebugExtension.cpp.
References mlir::DialectRegistry::addExtensions().
Referenced by mlir::registerAllExtensions().
void mlir::transform::registerIRDLExtension | ( | DialectRegistry & | dialectRegistry | ) |
Registers the IRDL extension of the Transform dialect in the given registry.
Definition at line 34 of file IRDLExtension.cpp.
References mlir::DialectRegistry::addExtensions().
Referenced by mlir::registerAllExtensions().
void mlir::transform::registerLoopExtension | ( | DialectRegistry & | dialectRegistry | ) |
Registers the loop extension of the Transform dialect in the given registry.
Definition at line 34 of file LoopExtension.cpp.
References mlir::DialectRegistry::addExtensions().
Referenced by mlir::registerAllExtensions().
void mlir::transform::registerPDLExtension | ( | DialectRegistry & | dialectRegistry | ) |
Registers the PDL extension of the Transform dialect in the given registry.
Definition at line 69 of file PDLExtension.cpp.
References mlir::DialectRegistry::addExtensions().
Referenced by mlir::registerAllExtensions().
DiagnosedSilenceableFailure mlir::transform::tileToForallOpImpl | ( | RewriterBase & | rewriter, |
transform::TransformState & | state, | ||
TransformOpInterface | transformOp, | ||
Operation * | target, | ||
ArrayRef< OpFoldResult > | mixedNumThreads, | ||
ArrayRef< OpFoldResult > | mixedTileSizes, | ||
std::optional< ArrayAttr > | mapping, | ||
scf::SCFTilingResult & | tilingResult | ||
) |
Implementation of tiling operations using scf.forall
.
Definition at line 3282 of file LinalgTransformOps.cpp.
LogicalResult mlir::transform::verifyTransformMatchDimsOp | ( | Operation * | op, |
ArrayRef< int64_t > | raw, | ||
bool | inverted, | ||
bool | all | ||
) |
Checks if the positional specification defined is valid and reports errors otherwise.
Definition at line 78 of file MatchInterfaces.cpp.
References mlir::Operation::emitOpError().