MLIR 22.0.0git
AsmPrinter.cpp File Reference
#include "mlir/IR/AffineExpr.h"
#include "mlir/IR/AffineMap.h"
#include "mlir/IR/AsmState.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinAttributes.h"
#include "mlir/IR/BuiltinDialect.h"
#include "mlir/IR/BuiltinTypeInterfaces.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/Dialect.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/DialectResourceBlobManager.h"
#include "mlir/IR/IntegerSet.h"
#include "mlir/IR/MLIRContext.h"
#include "mlir/IR/OpImplementation.h"
#include "mlir/IR/Operation.h"
#include "mlir/IR/Verifier.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/ScopeExit.h"
#include "llvm/ADT/ScopedHashTable.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DebugLog.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/Regex.h"
#include "llvm/Support/SaveAndRestore.h"
#include "llvm/Support/Threading.h"
#include "llvm/Support/raw_ostream.h"
#include <type_traits>
#include <optional>
#include <tuple>
#include "mlir/IR/OpAsmAttrInterface.cpp.inc"
#include "mlir/IR/OpAsmOpInterface.cpp.inc"
#include "mlir/IR/OpAsmTypeInterface.cpp.inc"

Go to the source code of this file.

Classes

class  mlir::AsmPrinter::Impl
class  mlir::detail::AsmStateImpl

Namespaces

namespace  mlir
 Include the generated interface declarations.
namespace  mlir::detail
 AttrTypeReplacer.

Macros

#define DEBUG_TYPE   "mlir-asm-printer"

Functions

static StringRef sanitizeIdentifier (StringRef name, SmallString< 16 > &buffer, StringRef allowedPunctChars="$._-")
 Sanitize the given name such that it can be used as a valid identifier.
template<typename Range>
void mlir::detail::printDimensionList (raw_ostream &stream, Range &&shape)
static OpPrintingFlags verifyOpAndAdjustFlags (Operation *op, OpPrintingFlags printerFlags)
 Verifies the operation and switches to generic op printing if verification fails.
static void printFloatValue (const APFloat &apValue, raw_ostream &os, bool *printedHex=nullptr)
 Print a floating point value in a way that the parser will be able to round-trip losslessly.
static bool isDialectSymbolSimpleEnoughForPrettyForm (StringRef symName)
 Returns true if the given dialect symbol data is simple enough to print in the pretty form.
static void printDialectSymbol (raw_ostream &os, StringRef symPrefix, StringRef dialectName, StringRef symString)
 Print the given dialect symbol to the stream.
static bool isBareIdentifier (StringRef name)
 Returns true if the given string can be represented as a bare identifier.
static void printKeywordOrString (StringRef keyword, raw_ostream &os)
 Print the given string as a keyword, or a quoted and escaped string if it has any special or non-printable characters in it.
static void printSymbolReference (StringRef symbolRef, raw_ostream &os)
 Print the given string as a symbol reference.
static void printElidedElementsAttr (raw_ostream &os)
static void printDenseIntElement (const APInt &value, raw_ostream &os, Type type)
 Print the integer element of a DenseElementsAttr.
static void printDenseElementsAttrImpl (bool isSplat, ShapedType type, raw_ostream &os, function_ref< void(unsigned)> printEltFn)
static OperationfindParent (Operation *op, bool shouldUseLocalScope)
void mlir::printDimensionList (OpAsmPrinter &printer, Operation *op, ArrayRef< int64_t > dimensions)
ParseResult mlir::parseDimensionList (OpAsmParser &parser, DenseI64ArrayAttr &dimensions)

Variables

static llvm::ManagedStatic< AsmPrinterOptions > clOptions

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "mlir-asm-printer"

Definition at line 58 of file AsmPrinter.cpp.

Function Documentation

◆ findParent()

Operation * findParent ( Operation * op,
bool shouldUseLocalScope )
static

Definition at line 4084 of file AsmPrinter.cpp.

References mlir::Operation::getParentOp(), and mlir::Operation::hasTrait().

◆ isBareIdentifier()

bool isBareIdentifier ( StringRef name)
static

Returns true if the given string can be represented as a bare identifier.

Definition at line 2314 of file AsmPrinter.cpp.

Referenced by printKeywordOrString().

◆ isDialectSymbolSimpleEnoughForPrettyForm()

bool isDialectSymbolSimpleEnoughForPrettyForm ( StringRef symName)
static

Returns true if the given dialect symbol data is simple enough to print in the pretty form.

This is essentially when the symbol takes the form: identifier (< body >)?

Definition at line 2281 of file AsmPrinter.cpp.

Referenced by printDialectSymbol().

◆ printDenseElementsAttrImpl()

void printDenseElementsAttrImpl ( bool isSplat,
ShapedType type,
raw_ostream & os,
function_ref< void(unsigned)> printEltFn )
static

◆ printDenseIntElement()

void printDenseIntElement ( const APInt & value,
raw_ostream & os,
Type type )
static

Print the integer element of a DenseElementsAttr.

Definition at line 2544 of file AsmPrinter.cpp.

References mlir::Type::isInteger(), and mlir::Type::isUnsignedInteger().

Referenced by mlir::AsmPrinter::Impl::printDenseArrayAttr().

◆ printDialectSymbol()

void printDialectSymbol ( raw_ostream & os,
StringRef symPrefix,
StringRef dialectName,
StringRef symString )
static

◆ printElidedElementsAttr()

void printElidedElementsAttr ( raw_ostream & os)
static

Definition at line 2358 of file AsmPrinter.cpp.

Referenced by mlir::AsmPrinter::Impl::printAttributeImpl().

◆ printFloatValue()

void printFloatValue ( const APFloat & apValue,
raw_ostream & os,
bool * printedHex = nullptr )
static

Print a floating point value in a way that the parser will be able to round-trip losslessly.

Definition at line 2217 of file AsmPrinter.cpp.

Referenced by mlir::AsmPrinter::Impl::printAttributeImpl(), mlir::AsmPrinter::Impl::printDenseArrayAttr(), and mlir::AsmPrinter::printFloat().

◆ printKeywordOrString()

void printKeywordOrString ( StringRef keyword,
raw_ostream & os )
static

Print the given string as a keyword, or a quoted and escaped string if it has any special or non-printable characters in it.

Definition at line 2328 of file AsmPrinter.cpp.

References isBareIdentifier().

◆ printSymbolReference()

void printSymbolReference ( StringRef symbolRef,
raw_ostream & os )
static

Print the given string as a symbol reference.

A symbol reference is represented as a string prefixed with '@'. The reference is surrounded with ""'s and escaped if it has any special or non-printable characters in it.

Definition at line 2344 of file AsmPrinter.cpp.

References mlir::AsmPrinter::printKeywordOrString().

Referenced by mlir::AsmPrinter::Impl::printAttributeImpl(), and mlir::AsmPrinter::printSymbolName().

◆ sanitizeIdentifier()

StringRef sanitizeIdentifier ( StringRef name,
SmallString< 16 > & buffer,
StringRef allowedPunctChars = "$._-" )
static

Sanitize the given name such that it can be used as a valid identifier.

If the string needs to be modified in any way, the provided buffer is used to store the new copy,

Definition at line 1043 of file AsmPrinter.cpp.

◆ verifyOpAndAdjustFlags()

OpPrintingFlags verifyOpAndAdjustFlags ( Operation * op,
OpPrintingFlags printerFlags )
static

Verifies the operation and switches to generic op printing if verification fails.

We need to do this because custom print functions may fail for invalid ops.

Definition at line 2053 of file AsmPrinter.cpp.

References diag(), mlir::Operation::getContext(), mlir::OpPrintingFlags::shouldAssumeVerified(), and mlir::OpPrintingFlags::shouldPrintGenericOpForm().

Referenced by mlir::AsmState::AsmState().

Variable Documentation

◆ clOptions

llvm::ManagedStatic<AsmPrinterOptions> clOptions
static

Definition at line 207 of file AsmPrinter.cpp.