MLIR
15.0.0git
|
This is a pure-virtual base class that exposes the asmprinter hooks necessary to implement a custom print() method. More...
#include "mlir/IR/OpImplementation.h"
Public Member Functions | |
~OpAsmPrinter () override | |
virtual void | printNewline ()=0 |
Print a newline and indent the printer to the start of the current operation. More... | |
virtual void | printRegionArgument (BlockArgument arg, ArrayRef< NamedAttribute > argAttrs={}, bool omitType=false)=0 |
Print a block argument in the usual format of: ssaName : type {attr1=42} loc("here") where location printing is controlled by the standard internal option. More... | |
virtual void | printOperand (Value value)=0 |
Print implementations for various things an operation contains. More... | |
virtual void | printOperand (Value value, raw_ostream &os)=0 |
template<typename ContainerType > | |
void | printOperands (const ContainerType &container) |
Print a comma separated list of operands. More... | |
template<typename IteratorType > | |
void | printOperands (IteratorType it, IteratorType end) |
Print a comma separated list of operands. More... | |
virtual void | printSuccessor (Block *successor)=0 |
Print the given successor. More... | |
virtual void | printSuccessorAndUseList (Block *successor, ValueRange succOperands)=0 |
Print the successor and its operands. More... | |
virtual void | printOptionalAttrDict (ArrayRef< NamedAttribute > attrs, ArrayRef< StringRef > elidedAttrs={})=0 |
If the specified operation has attributes, print out an attribute dictionary with their values. More... | |
virtual void | printOptionalAttrDictWithKeyword (ArrayRef< NamedAttribute > attrs, ArrayRef< StringRef > elidedAttrs={})=0 |
If the specified operation has attributes, print out an attribute dictionary prefixed with 'attributes'. More... | |
virtual void | printGenericOp (Operation *op, bool printOpName=true)=0 |
Print the entire operation with the default generic assembly form. More... | |
virtual void | printRegion (Region &blocks, bool printEntryBlockArgs=true, bool printBlockTerminators=true, bool printEmptyBlock=false)=0 |
Prints a region. More... | |
virtual void | shadowRegionArgs (Region ®ion, ValueRange namesToUse)=0 |
Renumber the arguments for the specified region to the same names as the SSA values in namesToUse. More... | |
virtual void | printAffineMapOfSSAIds (AffineMapAttr mapAttr, ValueRange operands)=0 |
Prints an affine map of SSA ids, where SSA id names are used in place of dims/symbols. More... | |
virtual void | printAffineExprOfSSAIds (AffineExpr expr, ValueRange dimOperands, ValueRange symOperands)=0 |
Prints an affine expression of SSA ids with SSA id names used instead of dims and symbols. More... | |
void | printFunctionalType (Operation *op) |
Print the complete type of an operation in functional form. More... | |
![]() | |
AsmPrinter (Impl &impl) | |
Initialize the printer with the given internal implementation. More... | |
virtual | ~AsmPrinter () |
virtual raw_ostream & | getStream () const |
Return the raw output stream used by this printer. More... | |
virtual void | printFloat (const APFloat &value) |
Print the given floating point value in a stabilized form that can be roundtripped through the IR. More... | |
virtual void | printType (Type type) |
virtual void | printAttribute (Attribute attr) |
template<typename AttrOrType , std::enable_if_t< detect_has_print_method< AttrOrType >::value > * sfinae = nullptr> | |
void | printStrippedAttrOrType (AttrOrType attrOrType) |
Print the provided attribute in the context of an operation custom printer/parser: this will invoke directly the print method on the attribute class and skip the #dialect.mnemonic prefix in most cases. More... | |
template<typename AttrOrType , std::enable_if_t<!detect_has_print_method< AttrOrType >::value > * sfinae = nullptr> | |
void | printStrippedAttrOrType (AttrOrType attrOrType) |
SFINAE for printing the provided attribute in the context of an operation custom printer in the case where the attribute does not define a print method. More... | |
virtual void | printAttributeWithoutType (Attribute attr) |
Print the given attribute without its type. More... | |
virtual void | printKeywordOrString (StringRef keyword) |
Print the given string as a keyword, or a quoted and escaped string if it has any special or non-printable characters in it. More... | |
virtual void | printSymbolName (StringRef symbolRef) |
Print the given string as a symbol reference, i.e. More... | |
template<typename TypeRange > | |
void | printOptionalArrowTypeList (TypeRange &&types) |
Print an optional arrow followed by a type list. More... | |
template<typename TypeRange > | |
void | printArrowTypeList (TypeRange &&types) |
template<typename InputRangeT , typename ResultRangeT > | |
void | printFunctionalType (InputRangeT &&inputs, ResultRangeT &&results) |
Print the two given type ranges in a functional form. More... | |
Additional Inherited Members | |
![]() | |
template<typename AttrOrType > | |
using | has_print_method = decltype(std::declval< AttrOrType >().print(std::declval< AsmPrinter & >())) |
Trait to check if AttrType provides a print method. More... | |
template<typename AttrOrType > | |
using | detect_has_print_method = llvm::is_detected< has_print_method, AttrOrType > |
![]() | |
AsmPrinter () | |
Initialize the printer with no internal implementation. More... | |
This is a pure-virtual base class that exposes the asmprinter hooks necessary to implement a custom print() method.
Definition at line 237 of file OpImplementation.h.
|
overridedefault |
Referenced by mlir::AsmParser::getContext().
|
pure virtual |
Prints an affine expression of SSA ids with SSA id names used instead of dims and symbols.
Operand values must come from single-result sources, and be valid dimensions/symbol identifiers according to mlir::isValidDim/Symbol.
Referenced by printMinMaxBound().
|
pure virtual |
Prints an affine map of SSA ids, where SSA id names are used in place of dims/symbols.
Operand values must come from single-result sources, and be valid dimensions/symbol identifiers according to mlir::isValidDim/Symbol.
Referenced by CanonicalizeSingleResultAffineMinMaxOp< T >::matchAndRewrite(), mlir::AffineDmaStartOp::print(), mlir::AffineDmaWaitOp::print(), printMinMaxBound(), mlir::replaceForOpWithNewYields(), verifyMemoryOpIndexing(), and verifyVectorMemoryOp().
Print the complete type of an operation in functional form.
Definition at line 80 of file AsmPrinter.cpp.
References mlir::Operation::getNumResults(), mlir::Operation::getOperands(), mlir::Operation::getResult(), mlir::Operation::getResults(), mlir::Value::getType(), and mlir::Type::isa().
Referenced by getLoadStoreElementType(), and mlir::scf::getParallelForInductionVarOwner().
|
pure virtual |
Print the entire operation with the default generic assembly form.
If printOpName
is true, then the operation name is printed (the default) otherwise it is omitted and the print will start with the operand list.
Referenced by mlir::OpState::print(), printOneResultOp(), and verifyCoopMatrixMulAdd().
|
pure virtual |
Print a newline and indent the printer to the start of the current operation.
Referenced by printSwitchOpCases().
Print implementations for various things an operation contains.
Referenced by mlir::operator<<(), mlir::AffineDmaWaitOp::print(), printBound(), and printLaunchFuncOperands().
|
inline |
Print a comma separated list of operands.
Definition at line 261 of file OpImplementation.h.
Referenced by isIntegerPtxType(), mlir::operator<<(), parseGlobalMemrefOpTypeAndInitialValue(), and printOneResultOp().
|
inline |
Print a comma separated list of operands.
Definition at line 267 of file OpImplementation.h.
References mlir::AsmPrinter::getStream(), and mlir::AsmPrinter::printFunctionalType().
|
pure virtual |
If the specified operation has attributes, print out an attribute dictionary with their values.
elidedAttrs allows the client to ignore specific well known attributes, commonly used if the attribute value is printed some other way (like as a fixed operand).
Referenced by applyTilingToAll(), computeMemRefRankReductionMask(), eachHasOnlyOneOfTypes(), foldMemRefCast(), getGenericEffectsImpl(), getInsertExtractValueElementType(), getLoadStoreElementType(), hasOneBranchOpTo(), mlir::scf::insideMutuallyExclusiveBranches(), isIntegerPtxType(), isZeroAttribute(), lookupSymbolInModule(), SelectToExtUI::matchAndRewrite(), CanonicalizeSingleResultAffineMinMaxOp< T >::matchAndRewrite(), parseGlobalMemrefOpTypeAndInitialValue(), printAffineMinMaxOp(), printBound(), printCreateOperationOpResults(), printFunctionResultList(), mlir::function_interface_impl::printFunctionSignature(), printInitializationList(), printLLVMOpAttrs(), printMinMaxBound(), printNamedStructuredOp(), printOneResultOp(), printSizeAssignment(), printTransferAttrs(), printVariableDecorations(), mlir::replaceForOpWithNewYields(), replaceOpWithRegion(), verifyAllocLikeOp(), verifyConstantType(), verifyCoopMatrixMulAdd(), verifyDimAndSymbolIdentifiers(), verifyMemoryOpIndexing(), verifyMemoryOpMetadata(), verifySymbolAttrUse(), and verifyVectorMemoryOp().
|
pure virtual |
If the specified operation has attributes, print out an attribute dictionary prefixed with 'attributes'.
Referenced by mlir::scf::getParallelForInductionVarOwner(), hasOneBranchOpTo(), isComputeOperation(), mlir::function_interface_impl::printFunctionAttributes(), and verifyAttributions().
|
pure virtual |
Prints a region.
If 'printEntryBlockArgs' is false, the arguments of the block are not printed. If 'printBlockTerminator' is false, the terminator operation of the block is not printed. If printEmptyBlock is true, then the block header is printed even if the block is empty.
Referenced by buildLLVMFunctionType(), computeMemRefRankReductionMask(), eachHasOnlyOneOfTypes(), foldMemRefCast(), mlir::scf::getParallelForInductionVarOwner(), hasOneBranchOpTo(), mlir::scf::insideMutuallyExclusiveBranches(), isComputeOperation(), lookupSymbolInModule(), printAtomicReductionRegion(), printAttributions(), printBound(), printCreateOperationOpResults(), mlir::function_interface_impl::printFunctionOp(), printInitializationList(), printMinMaxBound(), printSizeAssignment(), printWsLoopControl(), mlir::replaceForOpWithNewYields(), replaceOpWithRegion(), verifyAllocLikeOp(), verifyAttributions(), and verifyConstantType().
|
pure virtual |
Print a block argument in the usual format of: ssaName : type {attr1=42} loc("here") where location printing is controlled by the standard internal option.
You may pass omitType=true to not print a type, and pass an empty attribute list if you don't care for attributes.
Referenced by printBound(), and mlir::function_interface_impl::printFunctionSignature().
Print the given successor.
Referenced by mlir::operator<<(), and printCreateOperationOpResults().
|
pure virtual |
Print the successor and its operands.
Referenced by getLoadStoreElementType(), printSwitchOpCases(), and verifyAtomicCompareExchangeImpl().
|
pure virtual |
Renumber the arguments for the specified region to the same names as the SSA values in namesToUse.
This may only be used for IsolatedFromAbove operations. If any entry in namesToUse is null, the corresponding argument name is left alone.