MLIR  19.0.0git
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
mlir Namespace Reference

Include the generated interface declarations. More...

Namespaces

 acc
 
 affine
 
 amdgpu
 
 arith
 
 arm_neon
 
 arm_sme
 
 arm_sve
 
 async
 
 AttributeTrait
 This trait is used to determine if an attribute is mutable or not.
 
 bufferization
 
 builtin
 
 builtin_dialect_detail
 
 bytecode
 
 cf
 
 dataflow
 
 detail
 Detect if any of the given parameter types has a sub-element handler.
 
 dialect_extension_detail
 
 emitc
 
 func
 
 function_interface_impl
 
 gpu
 
 impl
 Attribute collections provide a dictionary-like interface.
 
 index
 
 intrange
 
 irdl
 
 khr
 
 linalg
 
 LLVM
 
 lsp
 
 matchers
 
 math
 
 MemoryEffects
 
 memref
 
 mesh
 
 ml_program
 
 nvgpu
 
 NVVM
 
 omp
 
 op_definition_impl
 
 OpTrait
 
 pdl
 
 pdl_to_pdl_interp
 
 pdll
 
 polynomial
 
 presburger
 
 python
 
 quant
 
 query
 
 ROCDL
 
 runtime
 
 scf
 
 shape
 
 SideEffects
 
 sparse_tensor
 
 Speculation
 
 spirv
 
 tblgen
 
 tensor
 
 tosa
 
 tracing
 
 transform
 
 TypeTrait
 This trait is used to determine if a type is a dynamic type or not; it should only be implemented by dynamic types.
 
 ub
 
 utils
 
 vector
 
 x86vector
 
 xegpu
 

Classes

class  LocalAliasAnalysis
 This class implements a local form of alias analysis that tries to identify the underlying values addressed by each value and performs a few basic checks to see if they alias. More...
 
class  AliasResult
 The possible results of an alias query. More...
 
class  ModRefResult
 The possible results of whether a memory access modifies or references a memory location. More...
 
class  AliasAnalysis
 This class represents the main alias analysis interface in MLIR. More...
 
class  CallGraphNode
 This class represents a single callable in the callgraph. More...
 
class  CallGraph
 
class  CFGLoop
 Representation of a single loop formed by blocks. More...
 
class  CFGLoopInfo
 An LLVM LoopInfo instantiation for MLIR that provides access to CFG loops found in the dominator tree. More...
 
class  GenericProgramPoint
 Abstract class for generic program points. More...
 
class  GenericProgramPointBase
 Base class for generic program points based on a concrete program point type and a content key. More...
 
struct  ProgramPoint
 Fundamental IR components are supported as first-class program points. More...
 
class  DataFlowConfig
 Configuration class for data flow solver and child analyses. More...
 
class  DataFlowSolver
 The general data-flow analysis solver. More...
 
class  AnalysisState
 Base class for generic analysis states. More...
 
class  DataFlowAnalysis
 Base class for all data-flow analyses. More...
 
class  DataLayoutAnalysis
 Stores data layout objects for each operation that specifies the data layout above and below the given operation. More...
 
class  FlatLinearConstraints
 FlatLinearConstraints is an extension of IntegerPolyhedron. More...
 
class  FlatLinearValueConstraints
 FlatLinearValueConstraints represents an extension of FlatLinearConstraints where each non-local variable can have an SSA Value attached to it. More...
 
class  Liveness
 Represents an analysis for computing liveness information from a given top-level operation. More...
 
class  LivenessBlockInfo
 This class represents liveness information on block level. More...
 
struct  SliceOptions
 
struct  BackwardSliceOptions
 
class  SymbolTableAnalysis
 This is a simple analysis that contains a symbol table collection and, for simplicity, a reference to the top-level symbol table. More...
 
class  AsmParserState
 This class represents state from a parsed MLIR textual format string. More...
 
class  AsmParserCodeCompleteContext
 This class provides an abstract interface into the parser for hooking in code completion events. More...
 
class  DialectVersion
 This class is used to represent the version of a dialect, for the purpose of polymorphic destruction. More...
 
class  DialectBytecodeReader
 This class defines a virtual interface for reading a bytecode stream, providing hooks into the bytecode reader. More...
 
class  DialectBytecodeWriter
 This class defines a virtual interface for writing to a bytecode stream, providing hooks into the bytecode writer. More...
 
class  BytecodeDialectInterface
 
class  BytecodeReader
 The BytecodeReader allows to load MLIR bytecode files, while keeping the state explicitly available in order to support lazy loading. More...
 
class  AttrTypeBytecodeReader
 A class to interact with the attributes and types parser when parsing MLIR bytecode. More...
 
class  BytecodeReaderConfig
 A class containing bytecode-specific configurations of the ParserConfig. More...
 
class  AttrTypeBytecodeWriter
 A class to interact with the attributes and types printer when emitting MLIR bytecode. More...
 
class  BytecodeWriterConfig
 This class contains the configuration used for the bytecode writer. More...
 
class  OperationPass
 Pass to transform an operation of a specific type. More...
 
class  ComplexStructBuilder
 
class  ControlFlowToSCFTransformation
 Implementation of CFGToSCFInterface used to lift Control Flow Dialect operations to SCF Dialect operations. More...
 
class  ConvertToLLVMPatternInterface
 Base class for dialect interfaces providing translation to LLVM IR. More...
 
struct  FunctionCallBuilder
 
class  LLVMConversionTarget
 Derived class that automatically populates legalization information for different LLVM ops. More...
 
class  LowerToLLVMOptions
 Options to control the LLVM lowering. More...
 
class  MemRefDescriptor
 Helper class to produce LLVM dialect operations extracting or inserting elements of a MemRef descriptor. More...
 
class  MemRefDescriptorView
 Helper class allowing the user to access a range of Values that correspond to an unpacked memref descriptor using named accessors. More...
 
class  UnrankedMemRefDescriptor
 
class  ConvertToLLVMPattern
 Base class for operation conversions targeting the LLVM IR dialect. More...
 
class  ConvertOpToLLVMPattern
 Utility class for operation conversions targeting the LLVM dialect that match exactly one source operation. More...
 
class  OneToOneConvertToLLVMPattern
 Generic implementation of one-to-one conversion from "SourceOp" to "TargetOp" where the latter belongs to the LLVM dialect or an equivalent. More...
 
class  StructBuilder
 Helper class to produce LLVM dialect operations extracting or inserting values to a struct. More...
 
class  LLVMTypeConverter
 Conversion from types to the LLVM IR dialect. More...
 
class  AttrConvertPassThrough
 
class  VectorConvertToLLVMPattern
 Basic lowering implementation to rewrite Ops with just one result to the LLVM Dialect. More...
 
struct  AllocationOpLLVMLowering
 Lowering for memory allocation ops. More...
 
struct  AllocLikeOpLLVMLowering
 Lowering for AllocOp and AllocaOp. More...
 
class  InterfacePass
 Pass to transform an operation that implements the given interface. More...
 
struct  ScfToSPIRVContext
 
class  SPIRVToLLVMConversion
 
struct  VectorTransferToSCFOptions
 When lowering an N-d vector transfer op to an (N-1)-d vector transfer op, a temporary buffer is created through which individual (N-1)-d vector are staged. More...
 
struct  ArithBuilder
 Helper struct to build simple arithmetic quantities with minimal type inference support. More...
 
class  BufferViewFlowAnalysis
 A straight-forward alias analysis which ensures that all dependencies of all values will be determined. More...
 
class  BufferOriginAnalysis
 An is-same-buffer analysis that checks if two SSA values belong to the same buffer allocation or not. More...
 
class  DataLayoutEntryAttr
 A data layout entry attribute is a key-value pair where the key is a type or an identifier and the value is another attribute. More...
 
class  DataLayoutSpecAttr
 A data layout specification is a list of entries that specify (partial) data layout information. More...
 
class  HasDefaultDLTIDataLayout
 Trait to be used by operations willing to use the implementation of the data layout interfaces provided by the Target dialect. More...
 
class  ValueDecomposer
 This class provides a hook that expands one Value into multiple Value's, with a TypeConverter-inspired callback registration mechanism. More...
 
struct  MathPolynomialApproximationOptions
 
struct  SparsificationOptions
 Options for the Sparsification pass. More...
 
class  SparseTensorTypeToPtrConverter
 Sparse tensor type converter into an opaque pointer. More...
 
class  SparseTensorTypeToBufferConverter
 Sparse tensor type converter into an actual buffer. More...
 
class  StorageSpecifierToLLVMTypeConverter
 
struct  SPIRVConversionOptions
 
class  SPIRVTypeConverter
 Type conversion from builtin types to SPIR-V types for shader interface. More...
 
class  SPIRVConversionTarget
 
class  VulkanLayoutUtils
 According to the Vulkan spec "15.6.4. Offset and Stride Assignment": "There are different alignment requirements depending on the specific resources and on the features enabled on the device. More...
 
class  OwningOpRef
 This class acts as an owning reference to an op, and will automatically destroy the held op on destruction if the held op is valid. More...
 
class  DiagnosedSilenceableFailure
 The result of a transform IR operation application. More...
 
class  DiagnosedDefiniteFailure
 A compatibility class connecting InFlightDiagnostic to DiagnosedSilenceableFailure while providing an interface similar to the former. More...
 
class  RaggedArray
 A 2D array where each row may have different length. More...
 
class  StaticTileOffsetRange
 A range-style iterator that allows for iterating over the offsets of all potential tiles of size tileShape within the larger shape shape, using an ordering specified by loopOrder. More...
 
struct  ComposeReassociativeReshapeOps
 Pattern to collapse producer/consumer reshape ops that are both collapsing dimensions or are both expanding dimensions. More...
 
struct  ComposeCollapseOfExpandOp
 Pattern to compose collapse_shape(expand_shape(src, reassociation_1), reassociation_2). More...
 
struct  ComposeExpandOfCollapseOp
 
struct  Range
 Represents a range (offset, size, and stride) where each element of the triple may be dynamic or static. More...
 
struct  SaturatedInteger
 Idiomatic saturated operations on values like offsets, sizes, and strides. More...
 
class  StructuredGenerator
 Helper StructuredGenerator class to manipulate and rewrite ops with StructuredOpInterface. More...
 
class  SimpleObjectCache
 A simple object cache following Lang's LLJITWithObjectCache example. More...
 
struct  ExecutionEngineOptions
 
class  ExecutionEngine
 JIT-backed execution engine for MLIR. More...
 
struct  JitRunnerOptions
 JitRunner command line options used by JitRunnerConfig methods. More...
 
struct  JitRunnerConfig
 Configuration to override functionality of the JitRunner. More...
 
class  OwningMemRef
 Owning MemRef type that abstracts over the runtime type for ranked strided memref. More...
 
struct  CallInterfaceCallable
 A callable is either a symbol, or an SSA value, that is referenced by a call-like operation. More...
 
class  SuccessorOperands
 This class models how operands are forwarded to block arguments in control flow. More...
 
class  RegionSuccessor
 This class represents a successor of a region. More...
 
class  RegionBranchPoint
 This class represents a point being branched from in the methods of the RegionBranchOpInterface. More...
 
class  InvocationBounds
 This class represents upper and lower bounds on the number of times a region of a RegionBranchOpInterface can be invoked. More...
 
class  DataLayoutDialectInterface
 An interface to be implemented by dialects that can have identifiers in the data layout specification entries. More...
 
class  DataLayout
 The main mechanism for performing data layout queries. More...
 
class  DialectFoldInterface
 Define a fold interface to allow for dialects to control specific aspects of the folding behavior for operations they define. More...
 
class  ConstantIntRanges
 A set of arbitrary-precision integers representing bounds on a given integer value. More...
 
class  ShapeAdaptor
 Adaptor class to abstract the differences between whether value is from a ShapedType or ShapedTypeComponents or DenseIntElementsAttribute. More...
 
class  ShapedTypeComponents
 ShapedTypeComponents that represents the components of a ShapedType. More...
 
class  ValueShapeRange
 Range of values and shapes (corresponding effectively to Shapes dialect's ValueShape type concept). More...
 
struct  MemorySlot
 Represents a slot in memory. More...
 
struct  DestructurableMemorySlot
 Memory slot attached with information about its destructuring procedure. More...
 
struct  TilingResult
 Container for result values of tiling. More...
 
class  HyperrectangularSlice
 A hyperrectangular slice, represented as a list of offsets, sizes and strides. More...
 
class  ValueBoundsConstraintSet
 A helper class to be used with ValueBoundsOpInterface. More...
 
class  OpWithOffsetSizesAndStridesConstantArgumentFolder
 Pattern to rewrite dynamic offsets/sizes/strides of view/slice-like ops as constant arguments. More...
 
class  AffineExpr
 Base type for affine expression. More...
 
class  AffineBinaryOpExpr
 Affine binary operation expression. More...
 
class  AffineDimExpr
 A dimensional identifier appearing in an affine expression. More...
 
class  AffineSymbolExpr
 A symbolic identifier appearing in an affine expression. More...
 
class  AffineConstantExpr
 An integer constant appearing in affine expression. More...
 
class  AffineExprVisitorBase
 Base class for AffineExpr visitors/walkers. More...
 
class  AffineExprVisitor
 See documentation for AffineExprVisitorBase. More...
 
class  AffineExprVisitor< SubClass, LogicalResult >
 
class  SimpleAffineExprFlattener
 
class  AffineMap
 A multi-dimensional affine map Affine map's are immutable like Type's, and they are uniqued. More...
 
struct  MutableAffineMap
 A mutable affine map. Its affine expressions are however unique. More...
 
class  AsmResourceBlob
 The following classes enable support for parsing and printing resources within MLIR assembly formats. More...
 
class  HeapAsmResourceBlob
 This class provides a simple utility wrapper for creating heap allocated AsmResourceBlobs. More...
 
class  UnmanagedAsmResourceBlob
 This class provides a simple utility wrapper for creating "unmanaged" AsmResourceBlobs. More...
 
class  AsmResourceBuilder
 This class is used to build resource entries for use by the printer. More...
 
class  AsmParsedResourceEntry
 This class represents a single parsed resource entry. More...
 
class  AsmResourceParser
 This class represents an instance of a resource parser. More...
 
class  AsmResourcePrinter
 This class represents an instance of a resource printer. More...
 
class  FallbackAsmResourceMap
 A fallback map containing external resources not explicitly handled by another parser/printer. More...
 
class  ParserConfig
 This class represents a configuration for the MLIR assembly parser. More...
 
class  AsmState
 This class provides management for the lifetime of the state used when printing the IR. More...
 
class  Attribute
 Attributes are known-constant values of operations. More...
 
class  NamedAttribute
 NamedAttribute represents a combination of a name and an Attribute value. More...
 
struct  AttrTypeSubElementHandler< NamedAttribute >
 Allow walking and replacing the subelements of a NamedAttribute. More...
 
class  AttributeInterface
 This class represents the base of an attribute interface. More...
 
class  AbstractAttribute
 This class contains all of the static information common to all instances of a registered Attribute. More...
 
class  AttributeStorage
 Base storage class appearing in an attribute. More...
 
class  AttrTypeWalker
 AttrTypeWalker. More...
 
class  AttrTypeReplacer
 AttrTypeReplacer. More...
 
class  AttrTypeImmediateSubElementWalker
 AttrTypeSubElementHandler. More...
 
class  AttrTypeSubElementReplacements
 This class is used by AttrTypeSubElementHandler instances to process sub element replacements. More...
 
struct  AttrTypeSubElementHandler
 This class provides support for interacting with the SubElementInterfaces for different types of parameters. More...
 
struct  AttrTypeSubElementHandler< T, std::enable_if_t< std::is_base_of_v< Attribute, T >||std::is_base_of_v< Type, T > > >
 Implementation for derived Attributes and Types. More...
 
struct  AttrTypeSubElementHandler< ArrayRef< T >, std::enable_if_t< has_sub_attr_or_type_v< T > > >
 Implementation for derived ArrayRef. More...
 
struct  AttrTypeSubElementHandler< std::tuple< Ts... >, std::enable_if_t< has_sub_attr_or_type_v< Ts... > > >
 Implementation for Tuple. More...
 
class  ValueTypeRange
 This class implements iteration on the types of a given range of values. More...
 
class  Block
 Block represents an ordered list of Operations. More...
 
class  BlockOperand
 A block operand represents an operand that holds a reference to a Block, e.g. More...
 
class  PredecessorIterator
 Implement a predecessor iterator for blocks. More...
 
class  SuccessorRange
 This class implements the successor iterators for Block. More...
 
class  BlockRange
 This class provides an abstraction over the different types of ranges over Blocks. More...
 
class  Builder
 This class is a general helper class for creating context-global objects like types, attributes, and affine expressions. More...
 
class  OpBuilder
 This class helps build Operations. More...
 
struct  DialectResourceBlobHandle
 This class defines a dialect specific handle to a resource blob. More...
 
class  DenseElementsAttr
 An attribute that represents a reference to a dense vector or tensor object. More...
 
class  SplatElementsAttr
 An attribute that represents a reference to a splat vector or tensor constant, meaning all of the elements have the same value. More...
 
class  BoolAttr
 Special case of IntegerAttr to represent boolean integers, i.e., signless i1 integers. More...
 
class  FlatSymbolRefAttr
 A symbol reference with a reference path containing a single element. More...
 
class  DenseFPElementsAttr
 An attribute that represents a reference to a dense float vector or tensor object. More...
 
class  DenseIntElementsAttr
 An attribute that represents a reference to a dense integer vector or tensor object. More...
 
class  DistinctAttr
 An attribute that associates a referenced attribute with a unique identifier. More...
 
class  FloatType
 
class  TensorType
 Tensor types represent multi-dimensional arrays, and have two variants: RankedTensorType and UnrankedTensorType. More...
 
class  BaseMemRefType
 This class provides a shared interface for ranked and unranked memref types. More...
 
class  DiagnosticArgument
 A variant type that holds a single argument for a diagnostic. More...
 
class  Diagnostic
 This class contains all of the information necessary to report a diagnostic to the DiagnosticEngine. More...
 
class  InFlightDiagnostic
 This class represents a diagnostic that is inflight and set to be reported. More...
 
class  DiagnosticEngine
 This class is the main interface for diagnostics. More...
 
class  ScopedDiagnosticHandler
 This diagnostic handler is a simple RAII class that registers and erases a diagnostic handler on a given context. More...
 
class  SourceMgrDiagnosticHandler
 This class is a utility diagnostic handler for use with llvm::SourceMgr. More...
 
class  SourceMgrDiagnosticVerifierHandler
 This class is a utility diagnostic handler for use with llvm::SourceMgr that verifies that emitted diagnostics match 'expected-*' lines on the corresponding line of the source file. More...
 
class  ParallelDiagnosticHandler
 This class is a utility diagnostic handler for use when multi-threading some part of the compiler where diagnostics may be emitted. More...
 
class  Dialect
 Dialects are groups of MLIR operations, types and attributes, as well as behavior associated with the entire group. More...
 
class  DialectAsmPrinter
 This is a pure-virtual base class that exposes the asmprinter hooks necessary to implement a custom printAttribute/printType() method on a dialect. More...
 
class  DialectAsmParser
 The DialectAsmParser has methods for interacting with the asm parser when parsing attributes and types. More...
 
struct  FieldParser
 Provide a template class that can be specialized by users to dispatch to parsers. More...
 
struct  FieldParser< AttributeT, std::enable_if_t< std::is_base_of< Attribute, AttributeT >::value, AttributeT > >
 Parse an attribute. More...
 
struct  FieldParser< TypeT, std::enable_if_t< std::is_base_of< Type, TypeT >::value, TypeT > >
 Parse an attribute. More...
 
struct  FieldParser< IntT, std::enable_if_t< std::is_integral< IntT >::value, IntT > >
 Parse any integer. More...
 
struct  FieldParser< std::string >
 Parse a string. More...
 
struct  FieldParser< std::optional< AttributeT >, std::enable_if_t< std::is_base_of< Attribute, AttributeT >::value, std::optional< AttributeT > > >
 Parse an Optional attribute. More...
 
struct  FieldParser< std::optional< IntT >, std::enable_if_t< std::is_integral< IntT >::value, std::optional< IntT > > >
 Parse an Optional integer. More...
 
struct  FieldParser< ContainerT, std::enable_if_t< llvm::is_detected< detail::has_push_back_t, ContainerT >::value, ContainerT > >
 Parse any container that supports back insertion as a list. More...
 
struct  FieldParser< AffineMap >
 Parse an affine map. More...
 
class  DialectInterface
 This class represents an interface overridden for a single dialect. More...
 
class  DialectInterfaceCollection
 A collection of dialect interfaces within a context, for a given concrete interface type. More...
 
class  DialectExtensionBase
 This class represents an opaque dialect extension. More...
 
class  DialectExtension
 This class represents a dialect extension anchored on the given set of dialects. More...
 
class  DialectRegistry
 The DialectRegistry maps a dialect namespace to a constructor for the matching dialect. More...
 
class  DialectResourceBlobManager
 This class defines a manager for dialect resource blobs. More...
 
class  ResourceBlobManagerDialectInterface
 This class implements a dialect interface that provides common functionality for interacting with a resource blob manager. More...
 
class  ResourceBlobManagerDialectInterfaceBase
 This class provides a base class for dialects implementing the resource blob interface. More...
 
class  DominanceInfo
 A class for computing basic dominance information. More...
 
class  PostDominanceInfo
 A class for computing basic postdominance information. More...
 
class  DynamicAttrDefinition
 The definition of a dynamic attribute. More...
 
class  DynamicAttr
 A dynamic attribute instance. More...
 
class  DynamicTypeDefinition
 The definition of a dynamic type. More...
 
class  DynamicType
 A dynamic type instance. More...
 
class  DynamicOpDefinition
 The definition of a dynamic op. More...
 
class  ExtensibleDialect
 A dialect that can be extended with new operations/types/attributes at runtime. More...
 
class  DynamicDialect
 A dialect that can be defined at runtime. More...
 
class  ImplicitLocOpBuilder
 ImplicitLocOpBuilder maintains a 'current location', allowing use of the create<> method without specifying the location. More...
 
class  IntegerSet
 An integer set representing a conjunction of one or more affine equalities and inequalities. More...
 
class  IRMapping
 This is a utility class for mapping one set of IR entities to another. More...
 
struct  ReverseIterator
 This iterator enumerates elements in "reverse" order. More...
 
struct  ForwardDominanceIterator
 This iterator enumerates elements according to their dominance relationship. More...
 
struct  ReverseDominanceIterator
 This iterator enumerates elements according to their reverse dominance relationship. More...
 
class  LocationAttr
 Location objects represent source locations information in MLIR. More...
 
class  Location
 This class defines the main interface for locations in MLIR and acts as a non-nullable wrapper around a LocationAttr. More...
 
class  FusedLocWith
 This class represents a fused location whose metadata is known to be an instance of the given type. More...
 
struct  AttrTypeSubElementHandler< Location >
 Enable locations to be introspected as sub-elements. More...
 
class  MLIRContext
 MLIRContext is the top-level object for a collection of MLIR operations. More...
 
class  OptionalParseResult
 This class implements Optional functionality for ParseResult. More...
 
struct  EmptyProperties
 Structure used by default as a "marker" when no "Properties" are set on an Operation. More...
 
struct  PropertiesSelector
 Traits to detect whether an Operation defined a Properties type, otherwise it'll default to EmptyProperties. More...
 
struct  PropertiesSelector< Op, std::void_t< typename Op::Properties > >
 
class  OpState
 This is the concrete base class that holds the operation pointer and has non-generic methods that only depend on State (to avoid having them instantiated on template types that don't affect them. More...
 
class  OpFoldResult
 This class represents a single result from folding an operation. More...
 
class  Op
 This provides public APIs that all operations should have. More...
 
class  OpInterface
 This class represents the base of an operation interface. More...
 
class  Operation
 Operation is the basic unit of execution within MLIR. More...
 
class  OpaqueProperties
 Simple wrapper around a void* in order to express generically how to pass in op properties through APIs. More...
 
class  OperationName
 
class  RegisteredOperationName
 This is a "type erased" representation of a registered operation. More...
 
class  NamedAttrList
 NamedAttrList is array of NamedAttributes that tracks whether it is sorted and does some basic work to remain sorted. More...
 
struct  OperationState
 This represents an operation in an abstracted form, suitable for use with the builder APIs. More...
 
class  OpPrintingFlags
 Set of flags used to control the behavior of the various IR print methods (e.g. More...
 
struct  OperationEquivalence
 This class provides utilities for computing if two operations are equivalent. More...
 
class  OperationFingerPrint
 A unique fingerprint for a specific operation, and all of it's internal operations (if includeNested is set). More...
 
class  AsmDialectResourceHandle
 This class represents an opaque handle to a dialect resource entry. More...
 
class  AsmDialectResourceHandleBase
 This class represents a CRTP base class for dialect resource handles. More...
 
class  AsmPrinter
 This base class exposes generic asm printer hooks, usable across the various derived printers. More...
 
class  OpAsmPrinter
 This is a pure-virtual base class that exposes the asmprinter hooks necessary to implement a custom print() method. More...
 
class  AsmParser
 This base class exposes generic asm parser hooks, usable across the various derived parsers. More...
 
class  OpAsmParser
 The OpAsmParser has methods for interacting with the asm parser: parsing things from it, emitting errors etc. More...
 
class  OpAsmDialectInterface
 
class  PatternBenefit
 This class represents the benefit of a pattern match in a unitless scheme that ranges from 0 (very little benefit) to 65K. More...
 
class  Pattern
 This class contains all of the data related to a pattern, but does not contain any methods or logic for the actual matching. More...
 
class  RewritePattern
 RewritePattern is the common base class for all DAG to DAG replacements. More...
 
struct  OpRewritePattern
 OpRewritePattern is a wrapper around RewritePattern that allows for matching and rewriting against an instance of a derived operation class as opposed to a raw Operation. More...
 
struct  OpInterfaceRewritePattern
 OpInterfaceRewritePattern is a wrapper around RewritePattern that allows for matching and rewriting against an instance of an operation interface instead of a raw Operation. More...
 
class  OpTraitRewritePattern
 OpTraitRewritePattern is a wrapper around RewritePattern that allows for matching and rewriting against instances of an operation that possess a given trait. More...
 
class  RewriterBase
 This class coordinates the application of a rewrite on a set of IR, providing a way for clients to track mutations and create new operations. More...
 
class  IRRewriter
 This class coordinates rewriting a piece of IR outside of a pattern rewrite, providing a way to keep track of the mutations made to the IR. More...
 
class  PatternRewriter
 A special type of RewriterBase that coordinates the application of a rewrite pattern on the current IR being matched, providing a way to keep track of any mutations made. More...
 
class  RewritePatternSet
 
class  Region
 This class contains a list of basic blocks and a link to the parent operation it is attached to. More...
 
class  RegionRange
 This class provides an abstraction over the different types of ranges over Regions. More...
 
class  SymbolTable
 This class allows for representing and managing the symbol table used by operations with the 'SymbolTable' trait. More...
 
class  SymbolTableCollection
 This class represents a collection of SymbolTables. More...
 
class  LockedSymbolTableCollection
 This class implements a lock-based shared wrapper around a symbol table collection that allows shared access to the collection of symbol tables. More...
 
class  SymbolUserMap
 This class represents a map of symbols to users, and provides efficient implementations of symbol queries related to users; such as collecting the users of a symbol, replacing all uses, etc. More...
 
class  TypeRange
 This class provides an abstraction over the various different ranges of value types. More...
 
class  TypeRangeRange
 This class provides an abstraction for a range of TypeRange. More...
 
class  ValueTypeIterator
 This class implements iteration on the types of a given range of values. More...
 
struct  AttrTypeSubElementHandler< TypeRange >
 Enable TypeRange to be introspected for sub-elements. More...
 
class  Type
 Instances of the Type class are uniqued, have an immutable identifier and an optional mutable component. More...
 
class  TypeInterface
 This class represents the base of a type interface. More...
 
class  AbstractType
 This class contains all of the static information common to all instances of a registered Type. More...
 
class  TypeStorage
 Base storage class appearing in a Type. More...
 
class  OperandElementTypeIterator
 
class  ResultElementTypeIterator
 
class  IRUnit
 IRUnit is a union of the different types of IR objects that consistute the IR structure (other than Type and Attribute), that is Operation, Region, and Block. More...
 
class  ValueUseIterator
 An iterator class that allows for iterating over the uses of an IR operand type. More...
 
class  ValueUserIterator
 An iterator over the users of an IRObject. More...
 
class  IROperand
 A reference to a value, suitable for use as an operand of an operation. More...
 
class  IRObjectWithUseList
 This class represents a single IR object that contains a use list. More...
 
class  Value
 This class represents an instance of an SSA value in the MLIR system, representing a computable value that has a type and a set of users. More...
 
class  OpOperand
 This class represents an operand of an operation. More...
 
class  BlockArgument
 This class represents an argument of a Block. More...
 
class  OpResult
 This is a value defined by a result of an operation. More...
 
class  OperandRange
 This class implements the operand iterators for the Operation class. More...
 
class  OperandRangeRange
 This class represents a contiguous range of operand ranges, e.g. More...
 
class  MutableOperandRange
 This class provides a mutable adaptor for a range of operands. More...
 
class  MutableOperandRangeRange
 This class represents a contiguous range of mutable operand ranges, e.g. More...
 
class  ResultRange
 This class implements the result iterators for the Operation class. More...
 
class  ValueRange
 This class provides an abstraction over the different types of ranges over Values. More...
 
class  WalkResult
 A utility result that is used to signal how to proceed with an ongoing walk: More...
 
struct  ForwardIterator
 This iterator enumerates the elements in "forward" order. More...
 
class  WalkStage
 A utility class to encode the current walk stage for "generic" walkers. More...
 
class  AnalysisManager
 This class represents an analysis manager for a particular operation instance. More...
 
class  ModuleAnalysisManager
 An analysis manager class specifically for the top-level operation. More...
 
class  Pass
 The abstract base pass class. More...
 
class  OperationPass< void >
 Pass to transform an operation. More...
 
class  PassWrapper
 This class provides a CRTP wrapper around a base pass class to define several necessary utility methods. More...
 
class  PassExecutionAction
 This class encapsulates the "action" of executing a single pass. More...
 
class  PassInstrumentation
 PassInstrumentation provides several entry points into the pass manager infrastructure. More...
 
class  PassInstrumentor
 This class holds a collection of PassInstrumentation objects, and invokes their respective call backs. More...
 
class  OpPassManager
 This class represents a pass manager that runs passes on either a specific operation type, or any isolated operation. More...
 
struct  ReproducerStream
 Streams on which to output crash reproducer. More...
 
class  PassManager
 The main pass manager and pipeline builder. More...
 
class  PassPipelineOptions
 Subclasses of PassPipelineOptions provide a set of options that can be used to initialize a pass pipeline. More...
 
struct  EmptyPipelineOptions
 A default empty option struct to be used for passes that do not need to take any options. More...
 
class  PassRegistryEntry
 Structure to group information about a passes and pass pipelines (argument to invoke via mlir-opt, description, pass pipeline builder). More...
 
class  PassPipelineInfo
 A structure to represent the information of a registered pass pipeline. More...
 
class  PassInfo
 A structure to represent the information for a derived pass class. More...
 
struct  PassRegistration
 PassRegistration provides a global initializer that registers a Pass allocation routine for a concrete pass instance. More...
 
struct  PassPipelineRegistration
 PassPipelineRegistration provides a global initializer that registers a Pass pipeline builder routine. More...
 
struct  PassPipelineRegistration< EmptyPipelineOptions >
 Convenience specialization of PassPipelineRegistration for EmptyPassOptions that does not pass an empty options struct to the pass builder function. More...
 
class  PassPipelineCLParser
 This class implements a command-line parser for MLIR passes. More...
 
class  PassNameCLParser
 This class implements a command-line parser specifically for MLIR pass names. More...
 
struct  PassReproducerOptions
 
class  ReductionNode
 ReductionTreePass will build a reduction tree during module reduction and the ReductionNode represents the vertex of the tree. More...
 
class  DialectReductionPatternInterface
 This is used to report the reduction patterns for a Dialect. More...
 
class  Tester
 This class is used to keep track of the testing environment of the tool. More...
 
class  FrozenRewritePatternSet
 This class represents a frozen set of patterns that can be processed by a pattern applicator. More...
 
class  ApplyPatternAction
 This is the type of Action that is dispatched when a pattern is applied. More...
 
class  PatternApplicator
 This class manages the application of a group of rewrite patterns, with a user-provided cost model. More...
 
class  CopyOnWriteArrayRef
 
class  raw_indented_ostream
 raw_ostream subclass that simplifies indention a sequence of code. More...
 
struct  LogicalResult
 This class represents an efficient way to signal success or failure. More...
 
class  FailureOr
 This class provides support for representing a failure result, or a valid value of type T. More...
 
class  ParseResult
 This class represents success/failure for parsing-like operations that find it important to chain together failable operations with ||. More...
 
class  StorageUniquer
 A utility class to get or create instances of "storage classes". More...
 
class  ThreadLocalCache
 This class provides support for defining a thread local object with non static storage duration. More...
 
class  TimingIdentifier
 This class represesents a uniqued string owned by a TimingManager. More...
 
class  TimingManager
 This class represents facilities to measure execution time. More...
 
class  Timer
 A handle for a timer in a TimingManager. More...
 
class  TimingScope
 An RAII-style wrapper around a timer that ensures the timer is properly started and stopped. More...
 
struct  TimeRecord
 Simple record class to record timing information. More...
 
class  OutputStrategy
 Facilities for printing timing reports to various output formats. More...
 
class  DefaultTimingManager
 Facilities for time measurement and report printing to an output stream. More...
 
class  TypeID
 This class provides an efficient unique identifier for a specific C++ type. More...
 
class  TypeIDAllocator
 This class provides a way to define new TypeIDs at runtime. More...
 
class  SelfOwningTypeID
 Defines a TypeID for each instance of this class by using a pointer to the instance. More...
 
class  GenInfo
 Structure to group information about a generator (argument to invoke via mlir-tblgen, description, and generator function). More...
 
struct  GenRegistration
 GenRegistration provides a global initializer that registers a generator function. More...
 
struct  GenNameParser
 Adds command line option for each registered generator. More...
 
class  LLVMImportDialectInterface
 Base class for dialect interfaces used to import LLVM IR. More...
 
class  LLVMImportInterface
 Interface collection for the import of LLVM IR that dispatches to a concrete dialect interface implementation. More...
 
class  LLVMTranslationDialectInterface
 Base class for dialect interfaces providing translation to LLVM IR. More...
 
class  LLVMTranslationInterface
 Interface collection for translation to LLVM IR, dispatches to a concrete interface implementation based on the dialect to which the given op belongs. More...
 
class  MlirOptMainConfig
 Configuration options for the mlir-opt tool. More...
 
class  Translation
 This class contains all of the components necessary for performing a translation. More...
 
struct  TranslateToMLIRRegistration
 Use Translate[ToMLIR|FromMLIR]Registration as an initializer that registers a function and associates it with name. More...
 
struct  TranslateFromMLIRRegistration
 
struct  TranslateRegistration
 
struct  TranslationParser
 A command line parser for translation functions. More...
 
struct  DialectPluginLibraryInfo
 Information about the plugin required to load its dialects & passes. More...
 
class  DialectPlugin
 A loaded dialect plugin. More...
 
struct  PassPluginLibraryInfo
 Information about the plugin required to load its passes. More...
 
class  PassPlugin
 A loaded pass plugin. More...
 
class  CFGToSCFInterface
 Interface that should be implemented by any caller of transformCFGToSCF. More...
 
class  TypeConverter
 Type conversion class. More...
 
class  ConversionPattern
 Base class for the conversion patterns. More...
 
class  OpConversionPattern
 OpConversionPattern is a wrapper around ConversionPattern that allows for matching and rewriting against an instance of a derived operation class as opposed to a raw Operation. More...
 
class  OpInterfaceConversionPattern
 OpInterfaceConversionPattern is a wrapper around ConversionPattern that allows for matching and rewriting against an instance of an OpInterface class as opposed to a raw Operation. More...
 
class  OpTraitConversionPattern
 OpTraitConversionPattern is a wrapper around ConversionPattern that allows for matching and rewriting against instances of an operation that possess a given trait. More...
 
class  ConversionPatternRewriter
 This class implements a pattern rewriter for use with ConversionPatterns. More...
 
class  ConversionTarget
 This class describes a specific conversion target. More...
 
class  PDLConversionConfig
 A PDL configuration that is used to supported dialect conversion functionality. More...
 
struct  ConversionConfig
 Dialect conversion configuration. More...
 
struct  EndomorphismSimplification
 
class  OperationFolder
 A utility class for folding operations, and unifying duplicated constants generated along the way. More...
 
class  GreedyRewriteConfig
 This class allows control over how the GreedyPatternRewriteDriver works. More...
 
struct  HomomorphismSimplification
 
class  InlinerConfig
 
class  Inliner
 This is an implementation of the inliner that operates bottom up over the Strongly Connected Components(SCCs) of the CallGraph. More...
 
class  DialectInlinerInterface
 This is the interface that must be implemented by the dialects of operations to be inlined. More...
 
class  InlinerInterface
 This interface provides the hooks into the inlining interface. More...
 
struct  Mem2RegStatistics
 Statistics collected while applying mem2reg. More...
 
class  OneToNTypeConverter
 Extends TypeConverter with 1:N target materializations. More...
 
class  OneToNTypeMapping
 Stores a 1:N mapping of types and provides several useful accessors. More...
 
class  RewritePatternWithConverter
 Extends the basic RewritePattern class with a type converter member and some accessors to it. More...
 
class  OneToNPatternRewriter
 Specialization of PatternRewriter that OneToNConversionPatterns use. More...
 
class  OneToNConversionPattern
 Base class for patterns with 1:N type conversions. More...
 
class  OneToNOpConversionPattern
 This class is a wrapper around OneToNConversionPattern for matching against instances of a particular op class. More...
 
struct  SROAStatistics
 Statistics collected while applying SROA. More...
 
class  Lexer
 This class breaks up the current file into a token stream. More...
 
class  Token
 This represents a token in the MLIR syntax. More...
 
struct  PyPrintAccumulator
 Accumulates into a python string from a method that accepts an MlirStringCallback. More...
 
class  PyFileAccumulator
 Accumulates int a python file-like object, either writing text (default) or binary. More...
 
struct  PySinglePartStringAccumulator
 Accumulates into a python string from a method that is expected to make one (no more, no less) call to the callback (asserts internally on violation). More...
 
class  Sliceable
 A CRTP base class for pseudo-containers willing to support Python-type slicing access on top of indexed access. More...
 
class  ExternalPass
 This pass class wraps external passes defined in other languages using the MLIR C-interface. More...
 
struct  GPUDynamicSharedMemoryOpLowering
 Lowering for gpu.dynamic.shared.memory to LLVM dialect. More...
 
struct  GPUFuncOpLowering
 
struct  GPUPrintfOpToHIPLowering
 The lowering of gpu.printf to a call to HIP hostcalls. More...
 
struct  GPUPrintfOpToLLVMCallLowering
 The lowering of gpu.printf to a call to an external printf() function. More...
 
struct  GPUPrintfOpToVPrintfLowering
 Lowering of gpu.printf to a vprintf standard library. More...
 
struct  GPUReturnOpLowering
 
struct  ScalarizeVectorOpLowering
 Rewriting that unrolls SourceOp to scalars if it's operating on vectors. More...
 
struct  GPUIndexIntrinsicOpLowering
 
struct  OpToFuncCallLowering
 Rewriting that replace SourceOp with a CallOp to f32Func or f64Func depending on the element type that Op operates upon. More...
 
struct  ScfToSPIRVContextImpl
 
struct  AttrTypeSubElementHandler< LLVM::detail::LLVMStructTypeStorage::Key >
 Allow walking and replacing the subelements of a LLVMStructTypeStorage key. More...
 
class  MLIRContextImpl
 This is the implementation of the MLIRContext class, using the pImpl idiom. More...
 
struct  OperationConverter
 

Typedefs

using TransitiveFilter = SliceOptions::TransitiveFilter
 
using ForwardSliceOptions = SliceOptions
 
using OwnedBlob = std::unique_ptr< std::vector< char > >
 
using BlobGenerator = std::function< OwnedBlob(const std::string &, Location, StringRef)>
 
using LoweringCallback = std::function< std::unique_ptr< llvm::Module >(Operation *, llvm::LLVMContext &, StringRef)>
 
using MemorySpaceMapping = std::function< unsigned(gpu::AddressSpace)>
 A function that maps a MemorySpace enum to a target-specific integer value. More...
 
using ReassociationIndices = SmallVector< int64_t, 2 >
 
using MemrefValue = TypedValue< BaseMemRefType >
 A value with a memref type. More...
 
using Loops = SmallVector< scf::ForOp, 8 >
 Tile a nest of standard for loops rooted at rootForOp by finding such parametric tile sizes that the outer loops have a fixed number of iterations as defined in sizes. More...
 
using TileLoops = std::pair< Loops, Loops >
 
using ReassociationIndicesRef = ArrayRef< int64_t >
 
using ReassociationExprs = SmallVector< AffineExpr, 2 >
 
using AllocFunType = llvm::function_ref< void *(size_t)>
 
template<typename T >
using ElementWiseVisitor = llvm::function_ref< void(T &ptr, ArrayRef< int64_t >)>
 Convenient callback to "visit" a memref element by element. More...
 
using DataLayoutEntryKey = llvm::PointerUnion< Type, StringAttr >
 
using DataLayoutEntryList = llvm::SmallVector< DataLayoutEntryInterface, 4 >
 
using DataLayoutEntryListRef = llvm::ArrayRef< DataLayoutEntryInterface >
 
using SetIntRangeFn = function_ref< void(Value, const ConstantIntRanges &)>
 The type of the setResultRanges callback provided to ops implementing InferIntRangeInterface. More...
 
using ReifiedRankedShapedTypeDims = SmallVector< SmallVector< OpFoldResult > >
 
using NewYieldValuesFn = std::function< SmallVector< Value >(OpBuilder &b, Location loc, ArrayRef< BlockArgument > newBbArgs)>
 A function that returns the additional yielded values during replaceWithAdditionalYields. More...
 
using ValueDimList = SmallVector< std::pair< Value, std::optional< int64_t > >>
 
using DefaultAttributeStorage = AttributeStorage
 Default storage type for attributes that require no additional initialization or storage. More...
 
using AttributeStorageAllocator = StorageUniquer::StorageAllocator
 
using AttrSubElementReplacements = AttrTypeSubElementReplacements< Attribute >
 
using TypeSubElementReplacements = AttrTypeSubElementReplacements< Type >
 
using DenseResourceElementsHandle = DialectResourceBlobHandle< BuiltinDialect >
 
using DenseBoolArrayAttr = detail::DenseArrayAttrImpl< bool >
 
using DenseI8ArrayAttr = detail::DenseArrayAttrImpl< int8_t >
 
using DenseI16ArrayAttr = detail::DenseArrayAttrImpl< int16_t >
 
using DenseI32ArrayAttr = detail::DenseArrayAttrImpl< int32_t >
 
using DenseI64ArrayAttr = detail::DenseArrayAttrImpl< int64_t >
 
using DenseF32ArrayAttr = detail::DenseArrayAttrImpl< float >
 
using DenseF64ArrayAttr = detail::DenseArrayAttrImpl< double >
 
using DenseBoolResourceElementsAttr = detail::DenseResourceElementsAttrBase< bool >
 
using DenseI8ResourceElementsAttr = detail::DenseResourceElementsAttrBase< int8_t >
 
using DenseI16ResourceElementsAttr = detail::DenseResourceElementsAttrBase< int16_t >
 
using DenseI32ResourceElementsAttr = detail::DenseResourceElementsAttrBase< int32_t >
 
using DenseI64ResourceElementsAttr = detail::DenseResourceElementsAttrBase< int64_t >
 
using DenseUI8ResourceElementsAttr = detail::DenseResourceElementsAttrBase< uint8_t >
 
using DenseUI16ResourceElementsAttr = detail::DenseResourceElementsAttrBase< uint16_t >
 
using DenseUI32ResourceElementsAttr = detail::DenseResourceElementsAttrBase< uint32_t >
 
using DenseUI64ResourceElementsAttr = detail::DenseResourceElementsAttrBase< uint64_t >
 
using DenseF32ResourceElementsAttr = detail::DenseResourceElementsAttrBase< float >
 
using DenseF64ResourceElementsAttr = detail::DenseResourceElementsAttrBase< double >
 
using DialectAllocatorFunction = std::function< Dialect *(MLIRContext *)>
 
using DialectAllocatorFunctionRef = function_ref< Dialect *(MLIRContext *)>
 
using DynamicDialectPopulationFunction = std::function< void(MLIRContext *, DynamicDialect *)>
 
using DominanceInfoNode = llvm::DomTreeNodeBase< Block >
 
using OpAsmSetValueNameFn = function_ref< void(Value, StringRef)>
 A functor used to set the name of the start of a result group of an operation. More...
 
using OpAsmSetBlockNameFn = function_ref< void(Block *, StringRef)>
 A functor used to set the name of blocks in regions directly nested under an operation. More...
 
using TypeRangeRangeIterator = llvm::mapped_iterator< llvm::iota_range< unsigned >::iterator, std::function< TypeRange(unsigned)> >
 
using DefaultTypeStorage = TypeStorage
 Default storage type for types that require no additional initialization or storage. More...
 
using TypeStorageAllocator = StorageUniquer::StorageAllocator
 This is a utility allocator used to allocate memory for instances of derived Types. More...
 
using OperandElementTypeRange = iterator_range< OperandElementTypeIterator >
 
using ResultElementTypeRange = iterator_range< ResultElementTypeIterator >
 
template<typename Ty , typename Value = mlir::Value>
using TypedValue = std::conditional_t< std::is_same_v< Ty, mlir::Type >, mlir::Value, detail::TypedValue< Ty > >
 If Ty is mlir::Type this will select Value instead of having a wrapper around it. More...
 
using ReproducerStreamFactory = std::function< std::unique_ptr< ReproducerStream >(std::string &error)>
 Method type for constructing ReproducerStream. More...
 
using PassRegistryFunction = std::function< LogicalResult(OpPassManager &, StringRef options, function_ref< LogicalResult(const Twine &)> errorHandler)>
 A registry function that adds passes to the given pass manager. More...
 
using PassAllocatorFunction = std::function< std::unique_ptr< Pass >()>
 
template<typename T , typename Enable = void>
using DenseMapInfo = llvm::DenseMapInfo< T, Enable >
 
template<typename KeyT , typename ValueT , typename KeyInfoT = DenseMapInfo<KeyT>, typename BucketT = llvm::detail::DenseMapPair<KeyT, ValueT>>
using DenseMap = llvm::DenseMap< KeyT, ValueT, KeyInfoT, BucketT >
 
template<typename ValueT , typename ValueInfoT = DenseMapInfo<ValueT>>
using DenseSet = llvm::DenseSet< ValueT, ValueInfoT >
 
template<typename T , typename Vector = llvm::SmallVector<T, 0>, typename Set = DenseSet<T>, unsigned N = 0>
using SetVector = llvm::SetVector< T, Vector, Set, N >
 
template<typename AllocatorTy = llvm::MallocAllocator>
using StringSet = llvm::StringSet< AllocatorTy >
 
template<typename T , typename R = T>
using StringSwitch = llvm::StringSwitch< T, R >
 
template<typename T , typename ResultT = void>
using TypeSwitch = llvm::TypeSwitch< T, ResultT >
 
template<typename Fn >
using function_ref = llvm::function_ref< Fn >
 
using ChunkBufferHandler = function_ref< LogicalResult(std::unique_ptr< llvm::MemoryBuffer > chunkBuffer, raw_ostream &os)>
 
using GenFunction = std::function< bool(const llvm::RecordKeeper &recordKeeper, raw_ostream &os)>
 Generator function to invoke. More...
 
using PassPipelineFn = llvm::function_ref< LogicalResult(PassManager &pm)>
 This defines the function type used to setup the pass manager. More...
 
using TranslateSourceMgrToMLIRFunction = std::function< OwningOpRef< Operation * >(const std::shared_ptr< llvm::SourceMgr > &sourceMgr, MLIRContext *)>
 Interface of the function that translates the sources managed by sourceMgr to MLIR. More...
 
using TranslateRawSourceMgrToMLIRFunction = std::function< OwningOpRef< Operation * >(llvm::SourceMgr &sourceMgr, MLIRContext *)>
 
using TranslateStringRefToMLIRFunction = std::function< OwningOpRef< Operation * >(llvm::StringRef, MLIRContext *)>
 Interface of the function that translates the given string to MLIR. More...
 
using TranslateFromMLIRFunction = std::function< LogicalResult(Operation *, llvm::raw_ostream &output)>
 Interface of the function that translates MLIR to a different format and outputs the result to a stream. More...
 
using TranslateFunction = std::function< LogicalResult(const std::shared_ptr< llvm::SourceMgr > &sourceMgr, llvm::raw_ostream &output, MLIRContext *)>
 Interface of the function that performs file-to-file translation involving MLIR. More...
 
using DialectRegistrationFunction = std::function< void(DialectRegistry &)>
 Interface of the function that adds all dialects and dialect extensions used for the translation to the given DialectRegistry. More...
 

Enumerations

enum class  ChangeResult { NoChange , Change }
 A result type used to indicate if a change happened. More...
 
enum class  HoistingKind : uint8_t { None = 0 , Loop = 1 << 0 , Block = 1 << 1 }
 
enum class  SparseParallelizationStrategy {
  kNone , kDenseOuterLoop , kAnyStorageOuterLoop , kDenseAnyLoop ,
  kAnyStorageAnyLoop
}
 Defines a parallelization strategy. More...
 
enum class  ReinterpretMapScope { kAll , kGenericOnly , kExceptGeneric }
 Defines a scope for reinterpret map pass. More...
 
enum class  SparseEmitStrategy { kFunctional , kDebugInterface }
 Defines a scope for reinterpret map pass. More...
 
enum class  SPIRVSubByteTypeStorage { Packed }
 How sub-byte values are storaged in memory. More...
 
enum class  ReshapeOpKind { kExpand , kCollapse }
 
enum class  DeletionKind { Keep , Delete }
 Returned by operation promotion logic requesting the deletion of an operation. More...
 
enum class  AffineExprKind {
  Add , Mul , Mod , FloorDiv ,
  CeilDiv , LAST_AFFINE_BINARY_OP = CeilDiv , Constant , DimId ,
  SymbolId
}
 
enum class  AsmResourceEntryKind { Blob , Bool , String }
 This enum represents the different kinds of resource values. More...
 
enum class  SliceVerificationResult {
  Success , RankTooLarge , SizeMismatch , ElemTypeMismatch ,
  MemSpaceMismatch , LayoutMismatch
}
 Enum that captures information related to verifier error conditions on slice insert/extract type of ops. More...
 
enum class  DiagnosticSeverity { Note , Warning , Error , Remark }
 Defines the different supported severity of a diagnostic. More...
 
enum class  RegionKind { SSACFG , Graph }
 The kinds of regions contained in an operation. More...
 
enum class  WalkOrder { PreOrder , PostOrder }
 Traversal order for region, block and operation walk utilities. More...
 
enum class  PassDisplayMode { List , Pipeline }
 An enum describing the different display modes for the information within the pass manager. More...
 
enum  TraversalMode { SinglePath , Backtrack , MultiPath }
 Defines the traversal method options to be used in the reduction tree traversal. More...
 
enum class  GreedyRewriteStrictness { AnyOp , ExistingAndNewOps , ExistingOps }
 This enum controls which ops are put on the worklist during a greedy pattern rewrite. More...
 

Functions

raw_ostream & operator<< (raw_ostream &os, const AliasResult &result)
 
raw_ostream & operator<< (raw_ostream &os, const ModRefResult &result)
 
ChangeResult operator| (ChangeResult lhs, ChangeResult rhs)
 
ChangeResultoperator|= (ChangeResult &lhs, ChangeResult rhs)
 
ChangeResult operator& (ChangeResult lhs, ChangeResult rhs)
 
raw_ostream & operator<< (raw_ostream &os, const AnalysisState &state)
 
raw_ostream & operator<< (raw_ostream &os, ProgramPoint point)
 
LogicalResult getFlattenedAffineExpr (AffineExpr expr, unsigned numDims, unsigned numSymbols, SmallVectorImpl< int64_t > *flattenedExpr, FlatLinearConstraints *cst=nullptr)
 Flattens 'expr' into 'flattenedExpr', which contains the coefficients of the dimensions, symbols, and additional variables that represent floor divisions of dimensions, symbols, and in turn other floor divisions. More...
 
LogicalResult getFlattenedAffineExprs (AffineMap map, std::vector< SmallVector< int64_t, 8 >> *flattenedExprs, FlatLinearConstraints *cst=nullptr)
 Flattens the result expressions of the map to their corresponding flattened forms and set in 'flattenedExprs'. More...
 
LogicalResult getFlattenedAffineExprs (IntegerSet set, std::vector< SmallVector< int64_t, 8 >> *flattenedExprs, FlatLinearConstraints *cst=nullptr)
 
LogicalResult getMultiAffineFunctionFromMap (AffineMap map, presburger::MultiAffineFunction &multiAff)
 
AffineMap alignAffineMapWithValues (AffineMap map, ValueRange operands, ValueRange dims, ValueRange syms, SmallVector< Value > *newSyms=nullptr)
 Re-indexes the dimensions and symbols of an affine map with given operands values to align with dims and syms values. More...
 
void getForwardSlice (Operation *op, SetVector< Operation * > *forwardSlice, const ForwardSliceOptions &options={})
 Fills forwardSlice with the computed forward slice (i.e. More...
 
void getForwardSlice (Value root, SetVector< Operation * > *forwardSlice, const ForwardSliceOptions &options={})
 Value-rooted version of getForwardSlice. More...
 
void getBackwardSlice (Operation *op, SetVector< Operation * > *backwardSlice, const BackwardSliceOptions &options={})
 Fills backwardSlice with the computed backward slice (i.e. More...
 
void getBackwardSlice (Value root, SetVector< Operation * > *backwardSlice, const BackwardSliceOptions &options={})
 Value-rooted version of getBackwardSlice. More...
 
SetVector< Operation * > getSlice (Operation *op, const BackwardSliceOptions &backwardSliceOptions={}, const ForwardSliceOptions &forwardSliceOptions={})
 Iteratively computes backward slices and forward slices until a fixed point is reached. More...
 
Value matchReduction (ArrayRef< BlockArgument > iterCarriedArgs, unsigned redPos, SmallVectorImpl< Operation * > &combinerOps)
 Utility to match a generic reduction given a list of iteration-carried arguments, iterCarriedArgs and the position of the potential reduction argument within the list, redPos. More...
 
bool sortTopologically (Block *block, iterator_range< Block::iterator > ops, function_ref< bool(Value, Operation *)> isOperandReady=nullptr)
 Given a block, sort a range operations in said block in topological order. More...
 
bool sortTopologically (Block *block, function_ref< bool(Value, Operation *)> isOperandReady=nullptr)
 Given a block, sort its operations in topological order, excluding its terminator if it has one. More...
 
bool computeTopologicalSorting (MutableArrayRef< Operation * > ops, function_ref< bool(Value, Operation *)> isOperandReady=nullptr)
 Compute a topological ordering of the given ops. More...
 
SetVector< Block * > getBlocksSortedByDominance (Region &region)
 Gets a list of blocks that is sorted according to dominance. More...
 
SetVector< Operation * > topologicalSort (const SetVector< Operation * > &toSort)
 Sorts all operations in toSort topologically while also considering region semantics. More...
 
LogicalResult parseAsmSourceFile (const llvm::SourceMgr &sourceMgr, Block *block, const ParserConfig &config, AsmParserState *asmState=nullptr, AsmParserCodeCompleteContext *codeCompleteContext=nullptr)
 This parses the file specified by the indicated SourceMgr and appends parsed operations to the given block. More...
 
Attribute parseAttribute (llvm::StringRef attrStr, MLIRContext *context, Type type={}, size_t *numRead=nullptr, bool isKnownNullTerminated=false)
 This parses a single MLIR attribute to an MLIR context if it was valid. More...
 
Type parseType (llvm::StringRef typeStr, MLIRContext *context, size_t *numRead=nullptr, bool isKnownNullTerminated=false)
 This parses a single MLIR type to an MLIR context if it was valid. More...
 
AffineMap parseAffineMap (llvm::StringRef str, MLIRContext *context)
 This parses a single IntegerSet/AffineMap to an MLIR context if it was valid. More...
 
IntegerSet parseIntegerSet (llvm::StringRef str, MLIRContext *context)
 
template<typename T , typename... Ts>
static LogicalResult readResourceHandle (DialectBytecodeReader &reader, FailureOr< T > &value, Ts &&...params)
 Helper for resource handle reading that returns LogicalResult. More...
 
template<typename T , typename... Ts>
auto get (MLIRContext *context, Ts &&...params)
 Helper method that injects context only if needed, this helps unify some of the attribute construction methods. More...
 
bool isBytecode (llvm::MemoryBufferRef buffer)
 Returns true if the given buffer starts with the magic bytes that signal MLIR bytecode. More...
 
LogicalResult readBytecodeFile (llvm::MemoryBufferRef buffer, Block *block, const ParserConfig &config)
 Read the operations defined within the given memory buffer, containing MLIR bytecode, into the provided block. More...
 
LogicalResult readBytecodeFile (const std::shared_ptr< llvm::SourceMgr > &sourceMgr, Block *block, const ParserConfig &config)
 An overload with a source manager whose main file buffer is used for parsing. More...
 
LogicalResult writeBytecodeToFile (Operation *op, raw_ostream &os, const BytecodeWriterConfig &config={})
 Write the bytecode for the given operation to the provided output stream. More...
 
void populateAffineToStdConversionPatterns (RewritePatternSet &patterns)
 Collect a set of patterns to convert from the Affine dialect to the Standard dialect, in particular convert structured affine control flow into CFG branch-based control flow. More...
 
void populateAffineToVectorConversionPatterns (RewritePatternSet &patterns)
 Collect a set of patterns to convert vector-related Affine ops to the Vector dialect. More...
 
Value lowerAffineLowerBound (affine::AffineForOp op, OpBuilder &builder)
 Emit code that computes the lower bound of the given affine loop using standard arithmetic operations. More...
 
Value lowerAffineUpperBound (affine::AffineForOp op, OpBuilder &builder)
 Emit code that computes the upper bound of the given affine loop using standard arithmetic operations. More...
 
std::unique_ptr< PasscreateLowerAffinePass ()
 Lowers affine control flow operations (ForStmt, IfStmt and AffineApplyOp) to equivalent lower-level constructs (flow of basic blocks and arithmetic primitives). More...
 
void populateAMDGPUToROCDLConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns, amdgpu::Chipset chipset)
 Note: The ROCDL target does not support the LLVM bfloat type at this time and so this function will add conversions to change all bfloat uses to i16. More...
 
std::unique_ptr< PasscreateConvertAMDGPUToROCDLPass ()
 
void populateArithToEmitCPatterns (TypeConverter &typeConverter, RewritePatternSet &patterns)
 
void populateConvertArmNeon2dToIntrPatterns (RewritePatternSet &patterns)
 Populates patterns for the lowering of Arm NEON 2D ops to intrinsics. More...
 
std::unique_ptr< PasscreateConvertArmNeon2dToIntrPass ()
 Creates a pass to lower Arm NEON 2D ops to intrinsics, i.e. More...
 
std::unique_ptr< PasscreateConvertArmSMEToLLVMPass (bool dumpTileLiveRanges=false)
 Create a pass to convert from the ArmSME dialect to LLVM intrinsics. More...
 
void configureArmSMEToLLVMConversionLegality (ConversionTarget &target)
 Configure target to convert from the ArmSME dialect to LLVM intrinsics. More...
 
void populateArmSMEToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Populate the given list with patterns that convert from the ArmSME dialect to LLVM intrinsics. More...
 
void populateArmSMEToSCFConversionPatterns (RewritePatternSet &patterns)
 Collect a set of patterns to convert from the ArmSME dialect to SCF. More...
 
std::unique_ptr< PasscreateConvertArmSMEToSCFPass ()
 Create a pass to convert a subset of ArmSME ops to SCF. More...
 
void populateAsyncStructuralTypeConversionsAndLegality (TypeConverter &typeConverter, RewritePatternSet &patterns, ConversionTarget &target)
 Populates patterns for async structural type conversions. More...
 
std::unique_ptr< PasscreateBufferizationToMemRefPass ()
 
void populateComplexToLibmConversionPatterns (RewritePatternSet &patterns, PatternBenefit benefit)
 Populate the given list with patterns that convert from Complex to Libm calls. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createConvertComplexToLibmPass ()
 Create a pass to convert Complex operations to libm calls. More...
 
void populateComplexToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Populate the given list with patterns that convert from Complex to LLVM. More...
 
void registerConvertComplexToLLVMInterface (DialectRegistry &registry)
 
void populateComplexToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating Complex ops to SPIR-V ops. More...
 
void populateComplexToStandardConversionPatterns (RewritePatternSet &patterns)
 Populate the given list with patterns that convert from Complex to Standard. More...
 
std::unique_ptr< PasscreateConvertComplexToStandardPass ()
 Create a pass to convert Complex operations to the Standard dialect. More...
 
std::unique_ptr< OperationPass<> > createConvertControlFlowToSPIRVPass ()
 Creates a pass to convert ControlFlow ops to SPIR-V ops. More...
 
void populateConversionTargetFromOperation (Operation *op, ConversionTarget &target, LLVMTypeConverter &typeConverter, RewritePatternSet &patterns)
 Recursively walk the IR and collect all dialects implementing the interface, and populate the conversion patterns. More...
 
std::unique_ptr< PasscreateConvertToLLVMPass ()
 Create a pass that performs dialect conversion to LLVM for all dialects implementing ConvertToLLVMPatternInterface. More...
 
void registerConvertToLLVMDependentDialectLoading (DialectRegistry &registry)
 Register the extension that will load dependent dialects for LLVM conversion. More...
 
void populateFuncToEmitCPatterns (RewritePatternSet &patterns)
 
FailureOr< LLVM::LLVMFuncOp > convertFuncOpToLLVMFuncOp (FunctionOpInterface funcOp, ConversionPatternRewriter &rewriter, const LLVMTypeConverter &converter)
 Convert input FunctionOpInterface operation to LLVMFuncOp by using the provided LLVMTypeConverter. More...
 
void populateFuncToLLVMFuncOpConversionPattern (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect the default pattern to convert a FuncOp to the LLVM dialect. More...
 
void populateFuncToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns, const SymbolTable *symbolTable=nullptr)
 Collect the patterns to convert from the Func dialect to LLVM. More...
 
void registerConvertFuncToLLVMInterface (DialectRegistry &registry)
 
void populateFuncToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating Func ops to SPIR-V ops. More...
 
std::unique_ptr< OperationPass<> > createConvertFuncToSPIRVPass ()
 Creates a pass to convert Func ops to SPIR-V ops. More...
 
void populateGpuToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns, StringRef gpuBinaryAnnotation={}, bool kernelBarePtrCallConv=false, SymbolTable *cachedModuleTable=nullptr)
 Collect a set of patterns to convert from the GPU dialect to LLVM and populate converter for gpu types. More...
 
void populateGpuMemorySpaceAttributeConversions (TypeConverter &typeConverter, const MemorySpaceMapping &mapping)
 Populates memory space attribute conversion rules for lowering gpu.address_space to integer values. More...
 
LLVM::LLVMStructType convertMMAToLLVMType (gpu::MMAMatrixType type)
 Return the LLVMStructureType corresponding to the MMAMatrixType type. More...
 
void configureGpuToNVVMConversionLegality (ConversionTarget &target)
 Configure target to convert from the GPU dialect to NVVM. More...
 
void populateGpuToNVVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect a set of patterns to convert from the GPU dialect to NVVM. More...
 
void populateGpuSubgroupReduceOpLoweringPattern (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Populate GpuSubgroupReduce pattern to NVVM. More...
 
void populateGpuWMMAToNVVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect a set of patterns to convert WMMA ops from GPU dialect to NVVM. More...
 
void populateGpuToROCDLConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns, gpu::amd::Runtime runtime)
 Collect a set of patterns to convert from the GPU dialect to ROCDL. More...
 
void configureGpuToROCDLConversionLegality (ConversionTarget &target)
 Configure target to convert from the GPU dialect to ROCDL. More...
 
std::unique_ptr< OperationPass< gpu::GPUModuleOp > > createLowerGpuOpsToROCDLOpsPass (const std::string &chipset="gfx900", unsigned indexBitwidth=kDeriveIndexBitwidthFromDataLayout, bool useBarePtrCallConv=false, gpu::amd::Runtime runtime=gpu::amd::Runtime::Unknown)
 Creates a pass that lowers GPU dialect operations to ROCDL counterparts. More...
 
void populateGPUToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating GPU Ops to SPIR-V ops. More...
 
void populateGpuWMMAToSPIRVCoopMatrixKHRConversionPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Collect a set of patterns to convert WMMA ops from GPU dialect to SPIRV, using the KHR Cooperative Matrix extension. More...
 
void populateMMAToSPIRVCoopMatrixTypeConversion (SPIRVTypeConverter &typeConverter)
 Adds MMAMatrixType conversions to SPIR-V cooperative matrix KHR type conversion to the type converter. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createConvertGPUToSPIRVPass (bool mapMemorySpace=true)
 Creates a pass to convert GPU kernel ops to corresponding SPIR-V ops. More...
 
std::unique_ptr< OperationPass< mlir::ModuleOp > > createConvertGpuLaunchFuncToVulkanLaunchFuncPass ()
 
std::unique_ptr< OperationPass< ModuleOp > > createConvertLinalgToStandardPass ()
 Create a pass to convert Linalg operations to the Standard dialect. More...
 
LogicalResult structFuncArgTypeConverter (const LLVMTypeConverter &converter, Type type, SmallVectorImpl< Type > &result)
 Callback to convert function argument types. More...
 
LogicalResult barePtrFuncArgTypeConverter (const LLVMTypeConverter &converter, Type type, SmallVectorImpl< Type > &result)
 Callback to convert function argument types. More...
 
void populateMathToLibmConversionPatterns (RewritePatternSet &patterns)
 Populate the given list with patterns that convert from Math to Libm calls. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createConvertMathToLibmPass ()
 Create a pass to convert Math operations to libm calls. More...
 
void populateMathToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns, bool approximateLog1p=true)
 
void registerConvertMathToLLVMInterface (DialectRegistry &registry)
 
void populateMathToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating Math ops to SPIR-V ops. More...
 
std::unique_ptr< OperationPass<> > createConvertMathToSPIRVPass ()
 Creates a pass to convert Math ops to SPIR-V ops. More...
 
void populateMemRefToEmitCTypeConversion (TypeConverter &typeConverter)
 
void populateMemRefToEmitCConversionPatterns (RewritePatternSet &patterns, TypeConverter &converter)
 
void populateFinalizeMemRefToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect a set of patterns to convert memory-related operations from the MemRef dialect to the LLVM dialect. More...
 
void registerConvertMemRefToLLVMInterface (DialectRegistry &registry)
 
void populateMemRefToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating MemRef ops to SPIR-V ops. More...
 
std::unique_ptr< OperationPass<> > createMapMemRefStorageClassPass ()
 Creates a pass to map numeric MemRef memory spaces to symbolic SPIR-V storage classes. More...
 
std::unique_ptr< OperationPass<> > createConvertMemRefToSPIRVPass ()
 Creates a pass to convert MemRef ops to SPIR-V ops. More...
 
void populateNVGPUToNVVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 
void populateNVVMToLLVMConversionPatterns (RewritePatternSet &patterns)
 
void registerConvertNVVMToLLVMInterface (DialectRegistry &registry)
 
void populateOpenACCToSCFConversionPatterns (RewritePatternSet &patterns)
 Collect the patterns to convert from the OpenACC dialect to OpenACC with SCF dialect. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createConvertOpenACCToSCFPass ()
 Create a pass to convert the OpenACC dialect into the LLVMIR dialect. More...
 
void configureOpenMPToLLVMConversionLegality (ConversionTarget &target, LLVMTypeConverter &typeConverter)
 Configure dynamic conversion legality of regionless operations from OpenMP to LLVM. More...
 
void populateOpenMPToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Populate the given list with patterns that convert from OpenMP to LLVM. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createPDLToPDLInterpPass ()
 Creates and returns a pass to convert PDL ops to PDL interpreter ops. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createPDLToPDLInterpPass (DenseMap< Operation *, PDLPatternConfigSet * > &configMap)
 Creates and returns a pass to convert PDL ops to PDL interpreter ops. More...
 
std::unique_ptr< PasscreateReconcileUnrealizedCastsPass ()
 Creates a pass that eliminates noop unrealized_conversion_cast operation sequences. More...
 
void populateReconcileUnrealizedCastsPatterns (RewritePatternSet &patterns)
 Populates patterns with rewrite patterns that eliminate noop unrealized_conversion_cast operation sequences. More...
 
void populateSCFToControlFlowConversionPatterns (RewritePatternSet &patterns)
 Collect a set of patterns to convert SCF operations to CFG branch-based operations within the ControlFlow dialect. More...
 
std::unique_ptr< PasscreateConvertSCFToCFPass ()
 Creates a pass to convert SCF operations to CFG branch-based operation in the ControlFlow dialect. More...
 
void populateSCFToEmitCConversionPatterns (RewritePatternSet &patterns)
 Collect a set of patterns to convert SCF operations to the EmitC dialect. More...
 
LogicalResult convertAffineLoopNestToGPULaunch (affine::AffineForOp forOp, unsigned numBlockDims, unsigned numThreadDims)
 Convert a perfect affine loop nest with the outermost loop identified by forOp into a gpu::Launch operation. More...
 
void populateParallelLoopToGPUPatterns (RewritePatternSet &patterns)
 Adds the conversion pattern from scf.parallel to gpu.launch to the provided pattern list. More...
 
void configureParallelLoopToGPULegality (ConversionTarget &target)
 Configures the rewrite target such that only scf.parallel operations that are not rewritten by the provided patterns are legal. More...
 
void finalizeParallelLoopToGPUConversion (Operation *op)
 Clean up after applyPartialConversion/applyFullConversion call. More...
 
std::unique_ptr< InterfacePass< FunctionOpInterface > > createAffineForToGPUPass (unsigned numBlockDims, unsigned numThreadDims)
 Create a pass that converts loop nests into GPU kernels. More...
 
std::unique_ptr< InterfacePass< FunctionOpInterface > > createAffineForToGPUPass ()
 
std::unique_ptr< PasscreateParallelLoopToGpuPass ()
 Creates a pass that converts scf.parallel operations into a gpu.launch operation. More...
 
void populateSCFToSPIRVPatterns (SPIRVTypeConverter &typeConverter, ScfToSPIRVContext &scfToSPIRVContext, RewritePatternSet &patterns)
 Collects a set of patterns to lower from scf.for, scf.if, and loop.terminator to CFG operations within the SPIR-V dialect. More...
 
std::unique_ptr< OperationPass<> > createConvertSCFToSPIRVPass ()
 Creates a pass to convert SCF ops into SPIR-V ops. More...
 
void populateShapeToStandardConversionPatterns (RewritePatternSet &patterns)
 
std::unique_ptr< OperationPass< ModuleOp > > createConvertShapeToStandardPass ()
 
void populateConvertShapeConstraintsConversionPatterns (RewritePatternSet &patterns)
 
std::unique_ptr< PasscreateConvertShapeConstraintsPass ()
 
void encodeBindAttribute (ModuleOp module)
 Encodes global variable's descriptor set and binding into its name if they both exist. More...
 
void populateSPIRVToLLVMTypeConversion (LLVMTypeConverter &typeConverter, spirv::ClientAPI clientAPIForAddressSpaceMapping=spirv::ClientAPI::Unknown)
 Populates type conversions with additional SPIR-V types. More...
 
void populateSPIRVToLLVMConversionPatterns (LLVMTypeConverter &typeConverter, RewritePatternSet &patterns, spirv::ClientAPI clientAPIForAddressSpaceMapping=spirv::ClientAPI::Unknown)
 Populates the given list with patterns that convert from SPIR-V to LLVM. More...
 
void populateSPIRVToLLVMFunctionConversionPatterns (LLVMTypeConverter &typeConverter, RewritePatternSet &patterns)
 Populates the given list with patterns for function conversion from SPIR-V to LLVM. More...
 
void populateSPIRVToLLVMModuleConversionPatterns (LLVMTypeConverter &typeConverter, RewritePatternSet &patterns)
 Populates the given patterns for module conversion from SPIR-V to LLVM. More...
 
void populateTensorToLinalgPatterns (RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating tensor ops to Linalg ops. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createConvertTensorToLinalgPass ()
 Creates a pass to convert Tensor ops to Linalg ops. More...
 
void populateTensorToSPIRVPatterns (SPIRVTypeConverter &typeConverter, int64_t byteCountThreshold, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating tensor ops to SPIR-V ops. More...
 
std::unique_ptr< OperationPass<> > createConvertTensorToSPIRVPass ()
 Creates a pass to convert Tensor ops to SPIR-V ops. More...
 
void populateVectorToArmSMEPatterns (RewritePatternSet &patterns, MLIRContext &ctx)
 Collect a set of patterns to lower Vector ops to ArmSME ops that map to LLVM intrinsics. More...
 
std::unique_ptr< PasscreateConvertVectorToArmSMEPass ()
 Create a pass to lower operations from the vector dialect to Arm SME. More...
 
void populatePrepareVectorToMMAPatterns (RewritePatternSet &patterns, bool useNvGpu=false)
 Patterns to transform vector ops into a canonical form to convert to MMA matrix operations. More...
 
LogicalResult convertVectorToMMAOps (RewriterBase &rewriter, Operation *rootOp)
 Convert vector ops to MMA matrix operations nested under rootOp. More...
 
LogicalResult convertVectorToNVVMCompatibleMMASync (RewriterBase &rewriter, Operation *rootOp)
 Convert vector ops ops nested under rootOp to vector and GPU operaitons compatible with the nvvm.mma.sync lowering path. More...
 
std::unique_ptr< PasscreateConvertVectorToGPUPass (bool useNvGpu=false)
 Convert from vector to GPU ops. More...
 
void populateVectorToLLVMMatrixConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect a set of patterns to convert from Vector contractions to LLVM Matrix Intrinsics. More...
 
void populateVectorToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns, bool reassociateFPReductions=false, bool force32BitVectorIndices=false)
 Collect a set of patterns to convert from the Vector dialect to LLVM. More...
 
void populateVectorToSCFConversionPatterns (RewritePatternSet &patterns, const VectorTransferToSCFOptions &options=VectorTransferToSCFOptions())
 Collect a set of patterns to convert from the Vector dialect to SCF + func. More...
 
std::unique_ptr< PasscreateConvertVectorToSCFPass (const VectorTransferToSCFOptions &options=VectorTransferToSCFOptions())
 Create a pass to convert a subset of vector ops to SCF. More...
 
void populateVectorToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating Vector Ops to SPIR-V ops. More...
 
void populateVectorReductionToSPIRVDotProductPatterns (RewritePatternSet &patterns)
 Appends patterns to convert vector reduction of the form: More...
 
std::unique_ptr< OperationPass<> > createConvertVectorToSPIRVPass ()
 Creates a pass to convert Vector Ops to SPIR-V ops. More...
 
void setupDebuggerExecutionContextHook (tracing::ExecutionContext &executionContext)
 
void populateAMXLegalizeForLLVMExportPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect a set of patterns to lower AMX ops to ops that map to LLVM intrinsics. More...
 
void configureAMXLegalizeForExportTarget (LLVMConversionTarget &target)
 Configure the target to support lowering AMX ops to ops that map to LLVM intrinsics. More...
 
std::optional< SmallVector< OpFoldResult > > inferExpandShapeOutputShape (OpBuilder &b, Location loc, ShapedType expandedType, ArrayRef< ReassociationIndices > reassociation, ArrayRef< OpFoldResult > inputShape)
 Infer the output shape for a {memref|tensor}.expand_shape when it is possible to do so. More...
 
detail::op_matcher< arith::ConstantIndexOpmatchConstantIndex ()
 Matches a ConstantIndexOp. More...
 
llvm::SmallBitVector getPositionsOfShapeOne (unsigned rank, ArrayRef< int64_t > shape)
 
Value getValueOrCreateConstantIndexOp (OpBuilder &b, Location loc, OpFoldResult ofr)
 Converts an OpFoldResult to a Value. More...
 
SmallVector< ValuegetValueOrCreateConstantIndexOp (OpBuilder &b, Location loc, ArrayRef< OpFoldResult > valueOrAttrVec)
 Similar to the other overload, but converts multiple OpFoldResults into Values. More...
 
Value getValueOrCreateCastToIndexLike (OpBuilder &b, Location loc, Type targetType, Value value)
 Create a cast from an index-like value (index or integer) to another index-like value. More...
 
Value convertScalarToDtype (OpBuilder &b, Location loc, Value operand, Type toType, bool isUnsignedCast)
 Converts a scalar value operand to type toType. More...
 
Value createScalarOrSplatConstant (OpBuilder &builder, Location loc, Type type, const APInt &value)
 Create a constant of type type at location loc whose value is value (an APInt or APFloat whose type must match the element type of type). More...
 
Value createScalarOrSplatConstant (OpBuilder &builder, Location loc, Type type, int64_t value)
 
Value createScalarOrSplatConstant (OpBuilder &builder, Location loc, Type type, const APFloat &value)
 
void populateArmSVELegalizeForLLVMExportPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect a set of patterns to lower ArmSVE ops to ops that map to LLVM intrinsics. More...
 
void configureArmSVELegalizeForExportTarget (LLVMConversionTarget &target)
 Configure the target to support lowering ArmSVE ops to ops that map to LLVM intrinsics. More...
 
std::unique_ptr< PasscreateAsyncParallelForPass ()
 
std::unique_ptr< PasscreateAsyncParallelForPass (bool asyncDispatch, int32_t numWorkerThreads, int32_t minTaskSize)
 
void populateAsyncFuncToAsyncRuntimeConversionPatterns (RewritePatternSet &patterns, ConversionTarget &target)
 
std::unique_ptr< OperationPass< ModuleOp > > createAsyncFuncToAsyncRuntimePass ()
 
std::unique_ptr< OperationPass< ModuleOp > > createAsyncToAsyncRuntimePass ()
 
std::unique_ptr< PasscreateAsyncRuntimeRefCountingPass ()
 
std::unique_ptr< PasscreateAsyncRuntimeRefCountingOptPass ()
 
std::unique_ptr< PasscreateAsyncRuntimePolicyBasedRefCountingPass ()
 
template<class AttrElementT , class ElementValueT = typename AttrElementT::ValueType, class PoisonAttr = ub::PoisonAttr, class CalculationT = function_ref< std::optional<ElementValueT>(ElementValueT, ElementValueT)>>
Attribute constFoldBinaryOpConditional (ArrayRef< Attribute > operands, Type resultType, CalculationT &&calculate)
 Performs constant folding calculate with element-wise behavior on the two attributes in operands and returns the result if possible. More...
 
template<class AttrElementT , class ElementValueT = typename AttrElementT::ValueType, class PoisonAttr = ub::PoisonAttr, class CalculationT = function_ref< std::optional<ElementValueT>(ElementValueT, ElementValueT)>>
Attribute constFoldBinaryOpConditional (ArrayRef< Attribute > operands, CalculationT &&calculate)
 Performs constant folding calculate with element-wise behavior on the two attributes in operands and returns the result if possible. More...
 
template<class AttrElementT , class ElementValueT = typename AttrElementT::ValueType, class PoisonAttr = void, class CalculationT = function_ref<ElementValueT(ElementValueT, ElementValueT)>>
Attribute constFoldBinaryOp (ArrayRef< Attribute > operands, Type resultType, CalculationT &&calculate)
 
template<class AttrElementT , class ElementValueT = typename AttrElementT::ValueType, class PoisonAttr = ub::PoisonAttr, class CalculationT = function_ref<ElementValueT(ElementValueT, ElementValueT)>>
Attribute constFoldBinaryOp (ArrayRef< Attribute > operands, CalculationT &&calculate)
 
template<class AttrElementT , class ElementValueT = typename AttrElementT::ValueType, class PoisonAttr = ub::PoisonAttr, class CalculationT = function_ref<std::optional<ElementValueT>(ElementValueT)>>
Attribute constFoldUnaryOpConditional (ArrayRef< Attribute > operands, CalculationT &&calculate)
 Performs constant folding calculate with element-wise behavior on the one attributes in operands and returns the result if possible. More...
 
template<class AttrElementT , class ElementValueT = typename AttrElementT::ValueType, class PoisonAttr = ub::PoisonAttr, class CalculationT = function_ref<ElementValueT(ElementValueT)>>
Attribute constFoldUnaryOp (ArrayRef< Attribute > operands, CalculationT &&calculate)
 
template<class AttrElementT , class TargetAttrElementT , class ElementValueT = typename AttrElementT::ValueType, class TargetElementValueT = typename TargetAttrElementT::ValueType, class PoisonAttr = ub::PoisonAttr, class CalculationT = function_ref<TargetElementValueT(ElementValueT, bool)>>
Attribute constFoldCastOp (ArrayRef< Attribute > operands, Type resType, CalculationT &&calculate)
 
void populateDecomposeCallGraphTypesPatterns (MLIRContext *context, TypeConverter &typeConverter, ValueDecomposer &decomposer, RewritePatternSet &patterns)
 Populates the patterns needed to drive the conversion process for decomposing call graph types with the given ValueDecomposer. More...
 
void populateCallOpTypeConversionPattern (RewritePatternSet &patterns, TypeConverter &converter)
 Add a pattern to the given pattern list to convert the operand and result types of a CallOp with the given type converter. More...
 
void populateBranchOpInterfaceTypeConversionPattern (RewritePatternSet &patterns, TypeConverter &converter, function_ref< bool(BranchOpInterface branchOp, int idx)> shouldConvertBranchOperand=nullptr)
 Add a pattern to the given pattern list to rewrite branch operations to use operands that have been legalized by the conversion framework. More...
 
bool isLegalForBranchOpInterfaceTypeConversionPattern (Operation *op, TypeConverter &converter)
 Return true if op is a BranchOpInterface op whose operands are all legal according to converter. More...
 
void populateReturnOpTypeConversionPattern (RewritePatternSet &patterns, TypeConverter &converter)
 Add a pattern to the given pattern list to rewrite return ops to use operands that have been legalized by the conversion framework. More...
 
bool isLegalForReturnOpTypeConversionPattern (Operation *op, TypeConverter &converter, bool returnOpAlwaysLegal=false)
 For ReturnLike ops (except return), return True. More...
 
bool isNotBranchOpInterfaceOrReturnLikeOp (Operation *op)
 Return true if op is neither BranchOpInterface nor ReturnLike. More...
 
void populateFuncTypeConversionPatterns (TypeConverter &typeConverter, RewritePatternSet &patterns)
 
void promoteToWorkgroupMemory (gpu::GPUFuncOp op, unsigned arg)
 Promotes a function argument to workgroup memory in the given function. More...
 
std::unique_ptr< PasscreateGpuLauchSinkIndexComputationsPass ()
 Pass that moves ops which are likely an index computation into gpu.launch body. More...
 
std::unique_ptr< OperationPass< ModuleOp > > createGpuKernelOutliningPass (StringRef dataLayoutStr=StringRef())
 Replaces gpu.launch with gpu.launch_func by moving the region into a separate kernel function. More...
 
std::unique_ptr< OperationPass< func::FuncOp > > createGpuAsyncRegionPass ()
 Rewrites a function region so that GPU ops execute asynchronously. More...
 
std::unique_ptr< OperationPass< func::FuncOp > > createGpuMapParallelLoopsPass ()
 Maps the parallel loops found in the given function to workgroups. More...
 
void populateGpuGlobalIdPatterns (RewritePatternSet &patterns)
 Collect a set of patterns to rewrite GlobalIdOp op within the GPU dialect. More...
 
void populateGpuShufflePatterns (RewritePatternSet &patterns)
 Collect a set of patterns to rewrite shuffle ops within the GPU dialect. More...
 
void populateGpuAllReducePatterns (RewritePatternSet &patterns)
 Collect a set of patterns to rewrite all-reduce ops within the GPU dialect. More...
 
void populateGpuBreakDownSubgrupReducePatterns (RewritePatternSet &patterns, unsigned maxShuffleBitwidth=32, PatternBenefit benefit=1)
 Collect a set of patterns to break down subgroup_reduce ops into smaller ones supported by the target of size <= maxShuffleBitwidth, where size is the subgroup_reduce value bitwidth. More...
 
void populateGpuLowerSubgroupReduceToShufflePattenrs (RewritePatternSet &patterns, unsigned subgroupSize, unsigned shuffleBitwidth=32, PatternBenefit benefit=1)
 Collect a set of patterns to lower gpu.subgroup_reduce into gpu.shuffle ops over shuffleBitwidth scalar types. More...
 
void populateGpuRewritePatterns (RewritePatternSet &patterns)
 Collect all patterns to rewrite ops within the GPU dialect. More...
 
void registerGpuSerializeToHsacoPass ()
 Register pass to serialize GPU kernel functions to a HSAco binary annotation. More...
 
std::unique_ptr< PasscreateGpuSerializeToHsacoPass (StringRef triple, StringRef arch, StringRef features, int optLevel)
 Create an instance of the GPU kernel function to HSAco binary serialization pass. More...
 
void populateGpuDecomposeMemrefsPatterns (RewritePatternSet &patterns)
 Collect a set of patterns to decompose memrefs ops. More...
 
std::unique_ptr< PasscreateGpuDecomposeMemrefsPass ()
 Pass decomposes memref ops inside gpu.launch body. More...
 
void populateGpuEliminateBarriersPatterns (RewritePatternSet &patterns)
 Erase barriers that do not enforce conflicting memory side effects. More...
 
gpu::GPUFuncOp outlineKernelFunc (gpu::LaunchOp launchOp, StringRef kernelFnName, SmallVectorImpl< Value > &operands)
 Get a gpu.func created from outlining the region of a gpu.launch op with the given kernelFnName. More...
 
LogicalResult sinkOperationsIntoLaunchOp (gpu::LaunchOp launchOp, llvm::function_ref< bool(Operation *)> isSinkingBeneficiary)
 Sink operations into the launchOp to reduce the number of values that are used within the region of the operation, but defined outside of the region. More...
 
ParseResult parseSemiFunctionType (OpAsmParser &parser, Type &argumentType, Type &resultType)
 Parses a single non-function type or a function type with at least one argument. More...
 
ParseResult parseSemiFunctionType (OpAsmParser &parser, Type &argumentType, SmallVectorImpl< Type > &resultTypes)
 
void printSemiFunctionType (OpAsmPrinter &printer, Operation *op, Type argumentType, TypeRange resultType)
 Prints argument and result types in a syntax similar to that of FunctionType but allowing and requiring one to omit the parens around the argument type in absence of result types, and without the trailing -> (). More...
 
void printSemiFunctionType (OpAsmPrinter &printer, Operation *op, Type argumentType, Type resultType)
 
void populateExpandCtlzPattern (RewritePatternSet &patterns)
 
void populateExpandTanPattern (RewritePatternSet &patterns)
 
void populateExpandSinhPattern (RewritePatternSet &patterns)
 
void populateExpandCoshPattern (RewritePatternSet &patterns)
 
void populateExpandTanhPattern (RewritePatternSet &patterns)
 
void populateExpandAsinhPattern (RewritePatternSet &patterns)
 
void populateExpandAcoshPattern (RewritePatternSet &patterns)
 
void populateExpandAtanhPattern (RewritePatternSet &patterns)
 
void populateExpandFmaFPattern (RewritePatternSet &patterns)
 
void populateExpandFloorFPattern (RewritePatternSet &patterns)
 
void populateExpandCeilFPattern (RewritePatternSet &patterns)
 
void populateExpandExp2FPattern (RewritePatternSet &patterns)
 
void populateExpandPowFPattern (RewritePatternSet &patterns)
 
void populateExpandFPowIPattern (RewritePatternSet &patterns)
 
void populateExpandRoundFPattern (RewritePatternSet &patterns)
 
void populateExpandRoundEvenPattern (RewritePatternSet &patterns)
 
void populateExpandRsqrtPattern (RewritePatternSet &patterns)
 
void populateMathAlgebraicSimplificationPatterns (RewritePatternSet &patterns)
 
void populatePolynomialApproximateTanhPattern (RewritePatternSet &patterns)
 
void populatePolynomialApproximateErfPattern (RewritePatternSet &patterns)
 
void populateMathPolynomialApproximationPatterns (RewritePatternSet &patterns, const MathPolynomialApproximationOptions &options={})
 
void populateUpliftToFMAPatterns (RewritePatternSet &patterns)
 
raw_ostream & operator<< (raw_ostream &os, const Range &range)
 
SmallVector< Range, 8 > getOrCreateRanges (OffsetSizeAndStrideOpInterface op, OpBuilder &b, Location loc)
 Return the list of Range (i.e. More...
 
std::unique_ptr< PasscreateSCFBufferizePass ()
 Creates a pass that bufferizes the SCF dialect. More...
 
std::unique_ptr< PasscreateForLoopSpecializationPass ()
 Creates a pass that specializes for loop for unrolling and vectorization. More...
 
std::unique_ptr< PasscreateForLoopPeelingPass ()
 Creates a pass that peels for loops at their upper bounds for better vectorization. More...
 
std::unique_ptr< PasscreateSCFForLoopCanonicalizationPass ()
 Creates a pass that canonicalizes affine.min and affine.max operations inside of scf.for loops with known lower and upper bounds. More...
 
std::unique_ptr< PasscreateTestSCFParallelLoopCollapsingPass ()
 Creates a pass that transforms a single ParallelLoop over N induction variables into another ParallelLoop over less than N induction variables. More...
 
std::unique_ptr< PasscreateParallelLoopFusionPass ()
 Creates a loop fusion pass which fuses parallel loops. More...
 
std::unique_ptr< PasscreateParallelLoopSpecializationPass ()
 Creates a pass that specializes parallel loop for unrolling and vectorization. More...
 
std::unique_ptr< PasscreateParallelLoopTilingPass (llvm::ArrayRef< int64_t > tileSize={}, bool noMinMaxBounds=false)
 Creates a pass which tiles innermost parallel loops. More...
 
std::unique_ptr< PasscreateForLoopRangeFoldingPass ()
 Creates a pass which folds arith ops on induction variable into loop range. More...
 
std::unique_ptr< PasscreateForallToForLoopPass ()
 Creates a pass that converts SCF forall loops to SCF for loops. More...
 
std::unique_ptr< PasscreateForToWhileLoopPass ()
 
SmallVector< scf::ForOp > replaceLoopNestWithNewYields (RewriterBase &rewriter, MutableArrayRef< scf::ForOp > loopNest, ValueRange newIterOperands, const NewYieldValuesFn &newYieldValuesFn, bool replaceIterOperandsUsesInLoop=true)
 Update a perfectly nested loop nest to yield new values from the innermost loop and propagating it up through the loop nest. More...
 
FailureOr< func::FuncOp > outlineSingleBlockRegion (RewriterBase &rewriter, Location loc, Region &region, StringRef funcName, func::CallOp *callOp=nullptr)
 Outline a region with a single block into a new FuncOp. More...
 
LogicalResult outlineIfOp (RewriterBase &b, scf::IfOp ifOp, func::FuncOp *thenFn, StringRef thenFnName, func::FuncOp *elseFn, StringRef elseFnName)
 Outline the then and/or else regions of ifOp as follows: More...
 
bool getInnermostParallelLoops (Operation *rootOp, SmallVectorImpl< scf::ParallelOp > &result)
 Get a list of innermost parallel loops contained in rootOp. More...
 
std::optional< std::pair< AffineExpr, AffineExpr > > getSCFMinMaxExpr (Value value, SmallVectorImpl< Value > &dims, SmallVectorImpl< Value > &symbols, llvm::function_ref< bool(Operation *)> loopFilter=nullptr)
 Return the min/max expressions for value if it is an induction variable from scf.for or scf.parallel loop. More...
 
LogicalResult coalesceLoops (MutableArrayRef< scf::ForOp > loops)
 Replace a perfect nest of "for" loops with a single linearized loop. More...
 
LogicalResult coalesceLoops (RewriterBase &rewriter, MutableArrayRef< scf::ForOp >)
 
LogicalResult coalescePerfectlyNestedSCFForLoops (scf::ForOp op)
 Walk an affine.for to find a band to coalesce. More...
 
void collapseParallelLoops (RewriterBase &rewriter, scf::ParallelOp loops, ArrayRef< std::vector< unsigned >> combinedDimensions)
 Take the ParallelLoop and for each set of dimension indices, combine them into a single dimension. More...
 
LogicalResult loopUnrollByFactor (scf::ForOp forOp, uint64_t unrollFactor, function_ref< void(unsigned, Operation *, OpBuilder)> annotateFn=nullptr)
 Unrolls this for operation by the specified unroll factor. More...
 
TileLoops extractFixedOuterLoops (scf::ForOp rootFOrOp, ArrayRef< int64_t > sizes)
 
SmallVector< Loops, 8 > tile (ArrayRef< scf::ForOp > forOps, ArrayRef< Value > sizes, ArrayRef< scf::ForOp > targets)
 Performs tiling fo imperfectly nested loops (with interchange) by strip-mining the forOps by sizes and sinking them, in their order of occurrence in forOps, under each of the targets. More...
 
Loops tile (ArrayRef< scf::ForOp > forOps, ArrayRef< Value > sizes, scf::ForOp target)
 Performs tiling (with interchange) by strip-mining the forOps by sizes and sinking them, in their order of occurrence in forOps, under target. More...
 
Loops tilePerfectlyNested (scf::ForOp rootForOp, ArrayRef< Value > sizes)
 Tile a nest of scf::ForOp loops rooted at rootForOp with the given (parametric) sizes. More...
 
void getPerfectlyNestedLoops (SmallVectorImpl< scf::ForOp > &nestedLoops, scf::ForOp root)
 Get perfectly nested sequence of loops starting at root of loop nest (the first op being another AffineFor, and the second op - a terminator). More...
 
scf::ForallOp fuseIndependentSiblingForallLoops (scf::ForallOp target, scf::ForallOp source, RewriterBase &rewriter)
 Given two scf.forall loops, target and source, fuses target into source. More...
 
scf::ForOp fuseIndependentSiblingForLoops (scf::ForOp target, scf::ForOp source, RewriterBase &rewriter)
 Given two scf.for loops, target and source, fuses target into source. More...
 
std::unique_ptr< PasscreateShapeToShapeLowering ()
 Creates an instance of the ShapeToShapeLowering pass that legalizes Shape dialect to be convertible to Arith. More...
 
void populateShapeRewritePatterns (RewritePatternSet &patterns)
 Collects a set of patterns to rewrite ops within the Shape dialect. More...
 
void populateRemoveShapeConstraintsPatterns (RewritePatternSet &patterns)
 
std::unique_ptr< OperationPass< func::FuncOp > > createRemoveShapeConstraintsPass ()
 
std::unique_ptr< OperationPass< func::FuncOp > > createShapeBufferizePass ()
 
std::unique_ptr< OperationPass< ModuleOp > > createOutlineShapeComputationPass ()
 Outline the shape computation part by adding shape.func and populate conrresponding mapping infomation into ShapeMappingAnalysis. More...
 
void populateSparseAssembler (RewritePatternSet &patterns, bool directOut)
 
std::unique_ptr< PasscreateSparseAssembler ()
 
std::unique_ptr< PasscreateSparseAssembler (bool directOut)
 
std::unique_ptr< PasscreateSparseEncodingPropagationPass ()
 
void populateSparseReinterpretMap (RewritePatternSet &patterns, ReinterpretMapScope scope)
 
std::unique_ptr< PasscreateSparseReinterpretMapPass ()
 
std::unique_ptr< PasscreateSparseReinterpretMapPass (ReinterpretMapScope scope)
 
void populatePreSparsificationRewriting (RewritePatternSet &patterns)
 
std::unique_ptr< PasscreatePreSparsificationRewritePass ()
 
void populateSparsificationPatterns (RewritePatternSet &patterns, const SparsificationOptions &options=SparsificationOptions())
 Sets up sparsification rewriting rules with the given options. More...
 
std::unique_ptr< PasscreateSparsificationPass ()
 
std::unique_ptr< PasscreateSparsificationPass (const SparsificationOptions &options)
 
void populateStageSparseOperationsPatterns (RewritePatternSet &patterns)
 Sets up StageSparseOperation rewriting rules. More...
 
std::unique_ptr< PasscreateStageSparseOperationsPass ()
 
void populateLowerSparseOpsToForeachPatterns (RewritePatternSet &patterns, bool enableRT, bool enableConvert)
 
std::unique_ptr< PasscreateLowerSparseOpsToForeachPass ()
 
std::unique_ptr< PasscreateLowerSparseOpsToForeachPass (bool enableRT, bool enableConvert)
 
void populateLowerForeachToSCFPatterns (RewritePatternSet &patterns)
 
std::unique_ptr< PasscreateLowerForeachToSCFPass ()
 
void populateSparseTensorConversionPatterns (TypeConverter &typeConverter, RewritePatternSet &patterns)
 Sets up sparse tensor conversion rules. More...
 
std::unique_ptr< PasscreateSparseTensorConversionPass ()
 
void populateSparseTensorCodegenPatterns (TypeConverter &typeConverter, RewritePatternSet &patterns, bool createSparseDeallocs, bool enableBufferInitialization)
 Sets up sparse tensor codegen rules. More...
 
std::unique_ptr< PasscreateSparseTensorCodegenPass ()
 
std::unique_ptr< PasscreateSparseTensorCodegenPass (bool createSparseDeallocs, bool enableBufferInitialization)
 
void populateSparseBufferRewriting (RewritePatternSet &patterns, bool enableBufferInitialization)
 
std::unique_ptr< PasscreateSparseBufferRewritePass ()
 
std::unique_ptr< PasscreateSparseBufferRewritePass (bool enableBufferInitialization)
 
void populateSparseVectorizationPatterns (RewritePatternSet &patterns, unsigned vectorLength, bool enableVLAVectorization, bool enableSIMDIndex32)
 Populates the given patterns list with vectorization rules. More...
 
std::unique_ptr< PasscreateSparseVectorizationPass ()
 
std::unique_ptr< PasscreateSparseVectorizationPass (unsigned vectorLength, bool enableVLAVectorization, bool enableSIMDIndex32)
 
void populateSparseGPUCodegenPatterns (RewritePatternSet &patterns, unsigned numThreads)
 
void populateSparseGPULibgenPatterns (RewritePatternSet &patterns, bool enableRT)
 
std::unique_ptr< PasscreateSparseGPUCodegenPass ()
 
std::unique_ptr< PasscreateSparseGPUCodegenPass (unsigned numThreads, bool enableRT)
 
void populateStorageSpecifierToLLVMPatterns (TypeConverter &converter, RewritePatternSet &patterns)
 
std::unique_ptr< PasscreateStorageSpecifierToLLVMPass ()
 
bufferization::OneShotBufferizationOptions getBufferizationOptionsForSparsification (bool analysisOnly)
 
std::unique_ptr< PasscreateSparsificationAndBufferizationPass ()
 
std::unique_ptr< PasscreateSparsificationAndBufferizationPass (const bufferization::OneShotBufferizationOptions &bufferizationOptions, const SparsificationOptions &sparsificationOptions, bool createSparseDeallocs, bool enableRuntimeLibrary, bool enableBufferInitialization, unsigned vectorLength, bool enableVLAVectorization, bool enableSIMDIndex32, bool enableGPULibgen)
 
void populateBuiltinFuncToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 Appends to a pattern list additional patterns for translating the builtin func op to the SPIR-V dialect. More...
 
DiagnosedDefiniteFailure emitDefiniteFailure (Location loc, const Twine &message)
 Emits a definite failure with the given message. More...
 
DiagnosedDefiniteFailure emitDefiniteFailure (Operation *op, const Twine &message={})
 
DiagnosedSilenceableFailure emitSilenceableFailure (Location loc, const Twine &message={})
 Emits a silenceable failure with the given message. More...
 
DiagnosedSilenceableFailure emitSilenceableFailure (Operation *op, const Twine &message={})
 
SmallVector< int64_t > computeSuffixProduct (ArrayRef< int64_t > sizes)
 Given a set of sizes, return the suffix product. More...
 
SmallVector< int64_t > computeStrides (ArrayRef< int64_t > sizes)
 
SmallVector< int64_t > computeElementwiseMul (ArrayRef< int64_t > v1, ArrayRef< int64_t > v2)
 Return a vector containing llvm::zip_equal(v1, v2) multiplied elementwise. More...
 
int64_t computeSum (ArrayRef< int64_t > basis)
 Self-explicit. More...
 
int64_t computeProduct (ArrayRef< int64_t > basis)
 Self-explicit. More...
 
int64_t computeMaxLinearIndex (ArrayRef< int64_t > basis)
 Return the number of elements of basis (i.e. More...
 
int64_t linearize (ArrayRef< int64_t > offsets, ArrayRef< int64_t > basis)
 Return the linearized index of 'offsets' w.r.t. More...
 
SmallVector< int64_t > delinearize (int64_t linearIndex, ArrayRef< int64_t > strides)
 Given the strides together with a linear index in the dimension space, return the vector-space offsets in each dimension for a de-linearized index. More...
 
std::optional< SmallVector< int64_t > > computeShapeRatio (ArrayRef< int64_t > shape, ArrayRef< int64_t > subShape)
 Return the multi-dimensional integral ratio of subShape to the trailing dimensions of shape. More...
 
SmallVector< AffineExprcomputeSuffixProduct (ArrayRef< AffineExpr > sizes)
 Given a set of sizes, return the suffix product. More...
 
SmallVector< AffineExprcomputeStrides (ArrayRef< AffineExpr > sizes)
 
SmallVector< AffineExprcomputeElementwiseMul (ArrayRef< AffineExpr > v1, ArrayRef< AffineExpr > v2)
 Return a vector containing llvm::zip_equal(v1, v2) multiplied elementwise. More...
 
AffineExpr computeSum (MLIRContext *ctx, ArrayRef< AffineExpr > basis)
 Self-explicit. More...
 
AffineExpr computeProduct (MLIRContext *ctx, ArrayRef< AffineExpr > basis)
 Self-explicit. More...
 
AffineExpr computeMaxLinearIndex (MLIRContext *ctx, ArrayRef< AffineExpr > basis)
 Return the number of elements of basis (i.e. More...
 
AffineExpr linearize (MLIRContext *ctx, ArrayRef< AffineExpr > offsets, ArrayRef< AffineExpr > basis)
 Return the linearized index of 'offsets' w.r.t. More...
 
AffineExpr linearize (MLIRContext *ctx, ArrayRef< AffineExpr > offsets, ArrayRef< int64_t > basis)
 
SmallVector< AffineExprdelinearize (AffineExpr linearIndex, ArrayRef< AffineExpr > strides)
 Given the strides together with a linear index in the dimension space, return the vector-space offsets in each dimension for a de-linearized index. More...
 
SmallVector< AffineExprdelinearize (AffineExpr linearIndex, ArrayRef< int64_t > strides)
 
template<typename T >
SmallVector< T > applyPermutation (ArrayRef< T > input, ArrayRef< int64_t > permutation)
 
template<typename T >
SmallVector< T > applyPermutation (const SmallVectorImpl< T > &input, ArrayRef< int64_t > permutation)
 
template<typename T , unsigned N>
void applyPermutationToVector (SmallVector< T, N > &inVec, ArrayRef< int64_t > permutation)
 Apply the permutation defined by permutation to inVec. More...
 
SmallVector< int64_t > invertPermutationVector (ArrayRef< int64_t > permutation)
 Helper method to apply to inverse a permutation. More...
 
bool isIdentityPermutation (ArrayRef< int64_t > permutation)
 Returns true if permutation is an identity permutation. More...
 
bool isPermutationVector (ArrayRef< int64_t > interchange)
 Method to check if an interchange vector is a permutation. More...
 
SmallVector< int64_t > computePermutationVector (int64_t permSize, ArrayRef< int64_t > positions, ArrayRef< int64_t > desiredPositions)
 Return a permutation vector of size permSize that would result in moving positions into desiredPositions. More...
 
SmallVector< int64_t > getI64SubArray (ArrayAttr arrayAttr, unsigned dropFront=0, unsigned dropBack=0)
 Helper to return a subset of arrayAttr as a vector of int64_t. More...
 
std::pair< AffineExpr, SmallVector< OpFoldResult > > computeLinearIndex (OpFoldResult sourceOffset, ArrayRef< OpFoldResult > strides, ArrayRef< OpFoldResult > indices)
 Compute linear index from provided strides and indices, assuming strided layout. More...
 
std::pair< AffineExpr, SmallVector< OpFoldResult > > computeLinearIndex (OpFoldResult sourceOffset, ArrayRef< int64_t > strides, ArrayRef< Value > indices)
 
constexpr StringRef getReassociationAttrName ()
 Attribute name for the ArrayAttr which encodes reassociation indices. More...
 
std::optional< SmallVector< ReassociationIndices > > composeReassociationIndices (ArrayRef< ReassociationIndices > producerReassociations, ArrayRef< ReassociationIndices > consumerReassociations, MLIRContext *context)
 Compose reassociation maps that are used in pair of reshape ops where one is a producer and other is the consumer. More...
 
SmallVector< SmallVector< AffineExpr, 2 >, 2 > convertReassociationIndicesToExprs (MLIRContext *context, ArrayRef< ReassociationIndices > reassociationIndices)
 Convert reassociation indices to affine expressions. More...
 
SmallVector< AffineMap, 4 > getSymbolLessAffineMaps (ArrayRef< ReassociationExprs > reassociation)
 Constructs affine maps out of Array<Array<AffineExpr>>. More...
 
ArrayAttr getReassociationIndicesAttribute (OpBuilder &b, ArrayRef< ReassociationIndices > reassociation)
 Wraps a list of reassociations in an ArrayAttr. More...
 
SmallVector< ReassociationIndices, 2 > convertReassociationMapsToIndices (ArrayRef< ReassociationExprs > reassociationExprs)
 Convert Array<Array<AffineExpr>> to Array<Array<int64_t>>. More...
 
std::optional< SmallVector< ReassociationIndices > > getReassociationIndicesForReshape (ShapedType sourceType, ShapedType targetType)
 Return the reassociations maps to use to reshape given the source type and the target type when possible. More...
 
std::optional< SmallVector< ReassociationIndices > > getReassociationIndicesForCollapse (ArrayRef< int64_t > sourceShape, ArrayRef< int64_t > targetShape)
 Returns the reassociation maps to collapse sourceShape to targetShape if possible. More...
 
bool isReassociationValid (ArrayRef< AffineMap > reassociation, int *invalidIndex=nullptr)
 Return true if the reassociation specification is valid, false otherwise. More...
 
template<typename ReshapeOpTy , typename InverseReshapeOpTy >
static OpFoldResult foldReshapeOp (ReshapeOpTy reshapeOp, ArrayRef< Attribute > operands)
 
template<typename Op , typename T >
static LogicalResult verifyReshapeLikeTypes (Op op, T expandedType, T collapsedType, bool isExpansion)
 Common verifier for reshape-like types. More...
 
LogicalResult reshapeLikeShapesAreCompatible (function_ref< LogicalResult(const Twine &)> emitError, ArrayRef< int64_t > collapsedShape, ArrayRef< int64_t > expandedShape, ArrayRef< ReassociationIndices > reassociationMaps, bool isExpandingReshape)
 Verify that shapes of the reshaped types using following rule: if a dimension in the collapsed type is static, then the corresponding dimensions in the expanded shape should be a) static b) the product should be same as the collaped shape. More...
 
bool hasNonIdentityLayout (Type type)
 Returns true iff the type is a MemRefType and has a non-identity layout. More...
 
llvm::SmallBitVector getSlicedDimensions (ArrayRef< OpFoldResult > sliceInputShape, ArrayRef< Range > sliceParams)
 The input parameters offsets, sizes, strides specify a rectangular non rank-reducing slice of the collapse_shape output. More...
 
llvm::SmallBitVector getLinearizedDimensions (ArrayRef< ReassociationIndices > reassociationIndices)
 Determine which dimensions are linearized by a tensor.collapse_shape op by inspecting its reassociation indices. More...
 
bool isZeroIndex (OpFoldResult v)
 Return true if v is an IntegerAttr with value 0 of a ConstantIndexOp with attribute with value 0. More...
 
std::tuple< SmallVector< OpFoldResult >, SmallVector< OpFoldResult >, SmallVector< OpFoldResult > > getOffsetsSizesAndStrides (ArrayRef< Range > ranges)
 Given an array of Range values, return a tuple of (offset vector, sizes vector, and strides vector) formed by separating out the individual elements of each range. More...
 
void dispatchIndexOpFoldResult (OpFoldResult ofr, SmallVectorImpl< Value > &dynamicVec, SmallVectorImpl< int64_t > &staticVec)
 Helper function to dispatch an OpFoldResult into staticVec if: a) it is an IntegerAttr In other cases, the OpFoldResult is dispached to the dynamicVec. More...
 
void dispatchIndexOpFoldResults (ArrayRef< OpFoldResult > ofrs, SmallVectorImpl< Value > &dynamicVec, SmallVectorImpl< int64_t > &staticVec)
 Helper function to dispatch multiple OpFoldResults according to the behavior of dispatchIndexOpFoldResult(OpFoldResult ofr for a single OpFoldResult. More...
 
template<typename IntTy >
SmallVector< IntTy > extractFromIntegerArrayAttr (Attribute attr)
 Extract integer values from the assumed ArrayAttr of IntegerAttr. More...
 
OpFoldResult getAsOpFoldResult (Value val)
 Given a value, try to extract a constant Attribute. More...
 
SmallVector< OpFoldResultgetAsOpFoldResult (ValueRange values)
 Given an array of values, try to extract a constant Attribute from each value. More...
 
SmallVector< OpFoldResultgetAsOpFoldResult (ArrayAttr arrayAttr)
 Convert arrayAttr to a vector of OpFoldResult. More...
 
OpFoldResult getAsIndexOpFoldResult (MLIRContext *ctx, int64_t val)
 Convert int64_t to integer attributes of index type and return them as OpFoldResult. More...
 
SmallVector< OpFoldResultgetAsIndexOpFoldResult (MLIRContext *ctx, ArrayRef< int64_t > values)
 
std::optional< int64_t > getConstantIntValue (OpFoldResult ofr)
 If ofr is a constant integer or an IntegerAttr, return the integer. More...
 
std::optional< SmallVector< int64_t > > getConstantIntValues (ArrayRef< OpFoldResult > ofrs)
 If all ofrs are constant integers or IntegerAttrs, return the integers. More...
 
bool isConstantIntValue (OpFoldResult ofr, int64_t value)
 Return true if ofr is constant integer equal to value. More...
 
bool isEqualConstantIntOrValue (OpFoldResult ofr1, OpFoldResult ofr2)
 Return true if ofr1 and ofr2 are the same integer constant attribute values or the same SSA value. More...
 
bool isEqualConstantIntOrValueArray (ArrayRef< OpFoldResult > ofrs1, ArrayRef< OpFoldResult > ofrs2)
 
SmallVector< OpFoldResultgetMixedValues (ArrayRef< int64_t > staticValues, ValueRange dynamicValues, Builder &b)
 Return a vector of OpFoldResults with the same size a staticValues, but all elements for which ShapedType::isDynamic is true, will be replaced by dynamicValues. More...
 
std::pair< SmallVector< int64_t >, SmallVector< Value > > decomposeMixedValues (const SmallVectorImpl< OpFoldResult > &mixedValues)
 Decompose a vector of mixed static or dynamic values into the corresponding pair of arrays. More...
 
SmallVector< ValuegetValuesSortedByKey (ArrayRef< Attribute > keys, ArrayRef< Value > values, llvm::function_ref< bool(Attribute, Attribute)> compare)
 Helper to sort values according to matching keys. More...
 
SmallVector< OpFoldResultgetValuesSortedByKey (ArrayRef< Attribute > keys, ArrayRef< OpFoldResult > values, llvm::function_ref< bool(Attribute, Attribute)> compare)
 
SmallVector< int64_t > getValuesSortedByKey (ArrayRef< Attribute > keys, ArrayRef< int64_t > values, llvm::function_ref< bool(Attribute, Attribute)> compare)
 
bool hasValidSizesOffsets (SmallVector< int64_t > sizesOrOffsets)
 Helper function to check whether the passed in sizes or offsets are valid. More...
 
bool hasValidStrides (SmallVector< int64_t > strides)
 Helper function to check whether the passed in strides are valid. More...
 
LogicalResult foldDynamicIndexList (SmallVectorImpl< OpFoldResult > &ofrs, bool onlyNonNegative=false, bool onlyNonZero=false)
 Returns "success" when any of the elements in ofrs is a constant value. More...
 
LogicalResult foldDynamicOffsetSizeList (SmallVectorImpl< OpFoldResult > &offsetsOrSizes)
 Returns "success" when any of the elements in offsetsOrSizes is a constant value. More...
 
LogicalResult foldDynamicStrideList (SmallVectorImpl< OpFoldResult > &strides)
 Returns "success" when any of the elements in strides is a constant value. More...
 
std::optional< int64_t > constantTripCount (OpFoldResult lb, OpFoldResult ub, OpFoldResult step)
 Return the number of iterations for a loop with a lower bound lb, upper bound ub and step step. More...
 
bool isRowMajorMatmul (ArrayAttr indexingMaps)
 Tests whether the given maps describe a row major matmul. More...
 
bool isColumnMajorMatmul (ArrayAttr indexingMaps)
 Tests whether the given maps describe a column major matmul. More...
 
bool isRowMajorBatchMatmul (ArrayAttr indexingMaps)
 Tests whether the given maps describe a row major batch matmul. More...
 
bool isVecmat (ArrayAttr indexingMaps)
 Tests whether the given maps describe a vector matrix multiplication. More...
 
bool isBatchVecmat (ArrayAttr indexingMaps)
 Tests whether the given maps describe a batch vector matrix multiplication. More...
 
bool isMatvec (ArrayAttr indexingMaps)
 Tests whether the given maps describe a matrix vector multiplication. More...
 
bool isBatchMatvec (ArrayAttr indexingMaps)
 Tests whether the given maps describe a batch matrix vector multiplication. More...
 
void findPositionsOfType (ArrayRef< utils::IteratorType > iteratorTypes, utils::IteratorType iteratorTypeName, SmallVectorImpl< unsigned > &res)
 Return positions in iteratorTypes that match iteratorTypeName. More...
 
Operationclone (OpBuilder &b, Operation *op, TypeRange newResultTypes, ValueRange newOperands)
 
template<typename OpT >
OpT clone (OpBuilder &b, OpT op, TypeRange newResultTypes, ValueRange newOperands)
 
OperationcloneWithoutRegions (OpBuilder &b, Operation *op, TypeRange newResultTypes, ValueRange newOperands)
 
SmallVector< NamedAttributegetPrunedAttributeList (Operation *op, ArrayRef< StringRef > elidedAttrs)
 
void populateX86VectorLegalizeForLLVMExportPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 Collect a set of patterns to lower X86Vector ops to ops that map to LLVM intrinsics. More...
 
void configureX86VectorLegalizeForExportTarget (LLVMConversionTarget &target)
 Configure the target to support lowering X86Vector ops to ops that map to LLVM intrinsics. More...
 
int JitRunnerMain (int argc, char **argv, const DialectRegistry &registry, JitRunnerConfig config={})
 Entry point for all CPU runners. More...
 
std::function< llvm::Error(llvm::Module *)> makeOptimizingTransformer (unsigned optLevel, unsigned sizeLevel, llvm::TargetMachine *targetMachine)
 Create a module transformer function for MLIR ExecutionEngine that runs LLVM IR passes corresponding to the given speed and size optimization levels (e.g. More...
 
void registerAllDialects (DialectRegistry &registry)
 Add all the MLIR dialects to the provided registry. More...
 
void registerAllDialects (MLIRContext &context)
 Append all the MLIR dialects to the registry contained in the given context. More...
 
void registerAllExtensions (DialectRegistry &registry)
 This function may be called to register all MLIR dialect extensions with the provided registry. More...
 
void registerAllPasses ()
 
void registerFromLLVMIRTranslation ()
 
void registerFromSPIRVTranslation ()
 
void registerToCppTranslation ()
 
void registerToLLVMIRTranslation ()
 
void registerToSPIRVTranslation ()
 
void registerAllTranslations ()
 
bool operator!= (RegionBranchPoint lhs, RegionBranchPoint rhs)
 
bool insideMutuallyExclusiveRegions (Operation *a, Operation *b)
 Return true if a and b are in mutually exclusive regions as per RegionBranchOpInterface. More...
 
RegiongetEnclosingRepetitiveRegion (Operation *op)
 Return the first enclosing region of the given op that may be executed repetitively as per RegionBranchOpInterface or nullptr if no such region exists. More...
 
RegiongetEnclosingRepetitiveRegion (Value value)
 Return the first enclosing region of the given Value that may be executed repetitively as per RegionBranchOpInterface or nullptr if no such region exists. More...
 
raw_ostream & operator<< (raw_ostream &, const ConstantIntRanges &)
 
LogicalResult reifyResultShapes (OpBuilder &b, Operation *op, ReifiedRankedShapedTypeDims &reifiedReturnShapes)
 Reify the shape of the result of an operation (typically in terms of the shape of its operands). More...
 
template<typename EffectTy >
bool hasSingleEffect (Operation *op, Value value=nullptr)
 Returns true if op has only an effect of type EffectTy (and of no other type) on value. More...
 
template<typename... EffectTys>
bool hasEffect (Operation *op, Value value=nullptr)
 Returns true if op has an effect of type EffectTy on value. More...
 
bool isOpTriviallyDead (Operation *op)
 Return true if the given operation is unused, and has no side effects on memory that prevent erasing. More...
 
bool wouldOpBeTriviallyDead (Operation *op)
 Return true if the given operation would be dead if unused, and has no side effects on memory that would prevent erasing. More...
 
bool isMemoryEffectFree (Operation *op)
 Returns true if the given operation is free of memory effects. More...
 
std::optional< llvm::SmallVector< MemoryEffects::EffectInstance > > getEffectsRecursively (Operation *rootOp)
 Returns the side effects of an operation. More...
 
bool isSpeculatable (Operation *op)
 Returns true if the given operation is speculatable, i.e. More...
 
bool isPure (Operation *op)
 Returns true if the given operation is pure, i.e., is speculatable that does not touch memory. More...
 
void printDynamicIndexList (OpAsmPrinter &printer, Operation *op, OperandRange values, ArrayRef< int64_t > integers, ArrayRef< bool > scalables, TypeRange valueTypes=TypeRange(), AsmParser::Delimiter delimiter=AsmParser::Delimiter::Square)
 Printer hook for custom directive in assemblyFormat. More...
 
void printDynamicIndexList (OpAsmPrinter &printer, Operation *op, OperandRange values, ArrayRef< int64_t > integers, TypeRange valueTypes=TypeRange(), AsmParser::Delimiter delimiter=AsmParser::Delimiter::Square)
 
ParseResult parseDynamicIndexList (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &values, DenseI64ArrayAttr &integers, DenseBoolArrayAttr &scalableVals, SmallVectorImpl< Type > *valueTypes=nullptr, AsmParser::Delimiter delimiter=AsmParser::Delimiter::Square)
 Parser hook for custom directive in assemblyFormat. More...
 
ParseResult parseDynamicIndexList (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &values, DenseI64ArrayAttr &integers, SmallVectorImpl< Type > *valueTypes=nullptr, AsmParser::Delimiter delimiter=AsmParser::Delimiter::Square)
 
ParseResult parseDynamicIndexList (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &values, DenseI64ArrayAttr &integers, SmallVectorImpl< Type > &valueTypes, AsmParser::Delimiter delimiter=AsmParser::Delimiter::Square)
 
ParseResult parseDynamicIndexList (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &values, DenseI64ArrayAttr &integers, SmallVectorImpl< Type > &valueTypes, DenseBoolArrayAttr &scalableVals, AsmParser::Delimiter delimiter=AsmParser::Delimiter::Square)
 
LogicalResult verifyListOfOperandsOrIntegers (Operation *op, StringRef name, unsigned expectedNumElements, ArrayRef< int64_t > attr, ValueRange values)
 Verify that a the values has as many elements as the number of entries in attr for which isDynamic evaluates to true. More...
 
inline ::llvm::hash_code hash_value (AffineExpr arg)
 Make AffineExpr hashable. More...
 
AffineExpr operator+ (int64_t val, AffineExpr expr)
 
AffineExpr operator* (int64_t val, AffineExpr expr)
 
AffineExpr operator- (int64_t val, AffineExpr expr)
 
AffineExpr getAffineDimExpr (unsigned position, MLIRContext *context)
 These free functions allow clients of the API to not use classes in detail. More...
 
AffineExpr getAffineSymbolExpr (unsigned position, MLIRContext *context)
 
AffineExpr getAffineConstantExpr (int64_t constant, MLIRContext *context)
 
SmallVector< AffineExprgetAffineConstantExprs (ArrayRef< int64_t > constants, MLIRContext *context)
 
AffineExpr getAffineBinaryOpExpr (AffineExprKind kind, AffineExpr lhs, AffineExpr rhs)
 
AffineExpr getAffineExprFromFlatForm (ArrayRef< int64_t > flatExprs, unsigned numDims, unsigned numSymbols, ArrayRef< AffineExpr > localExprs, MLIRContext *context)
 Constructs an affine expression from a flat ArrayRef. More...
 
raw_ostream & operator<< (raw_ostream &os, AffineExpr expr)
 
AffineExpr simplifyAffineExpr (AffineExpr expr, unsigned numDims, unsigned numSymbols)
 Simplify an affine expression by flattening and some amount of simple analysis. More...
 
template<typename... AffineExprTy>
void bindDims (MLIRContext *ctx, AffineExprTy &...exprs)
 Bind a list of AffineExpr references to DimExpr at positions: [0 . More...
 
template<typename AffineExprTy >
void bindDimsList (MLIRContext *ctx, MutableArrayRef< AffineExprTy > exprs)
 
template<typename... AffineExprTy>
void bindSymbols (MLIRContext *ctx, AffineExprTy &...exprs)
 Bind a list of AffineExpr references to SymbolExpr at positions: [0 . More...
 
template<typename AffineExprTy >
void bindSymbolsList (MLIRContext *ctx, MutableArrayRef< AffineExprTy > exprs)
 
std::optional< int64_t > getBoundForAffineExpr (AffineExpr expr, unsigned numDims, unsigned numSymbols, ArrayRef< std::optional< int64_t >> constLowerBounds, ArrayRef< std::optional< int64_t >> constUpperBounds, bool isUpper)
 Get a lower or upper (depending on isUpper) bound for expr while using the constant lower and upper bounds for its inputs provided in constLowerBounds and constUpperBounds. More...
 
inline ::llvm::hash_code hash_value (AffineMap arg)
 
AffineMap simplifyAffineMap (AffineMap map)
 Simplifies an affine map by simplifying its underlying AffineExpr results. More...
 
AffineMap compressDims (AffineMap map, const llvm::SmallBitVector &unusedDims)
 Drop the dims that are listed in unusedDims. More...
 
AffineMap compressUnusedDims (AffineMap map)
 Drop the dims that are not used. More...
 
SmallVector< AffineMapcompressUnusedDims (ArrayRef< AffineMap > maps)
 Drop the dims that are not used by any of the individual maps in maps. More...
 
AffineMap compressSymbols (AffineMap map, const llvm::SmallBitVector &unusedSymbols)
 Drop the symbols that are listed in unusedSymbols. More...
 
AffineMap compressUnusedSymbols (AffineMap map)
 Drop the symbols that are not used. More...
 
SmallVector< AffineMapcompressUnusedSymbols (ArrayRef< AffineMap > maps)
 Drop the symbols that are not used by any of the individual maps in maps. More...
 
AffineMap foldAttributesIntoMap (Builder &b, AffineMap map, ArrayRef< OpFoldResult > operands, SmallVector< Value > &remainingValues)
 Fold all attributes among the given operands into the affine map. More...
 
AffineMap removeDuplicateExprs (AffineMap map)
 Returns a map with the same dimension and symbol count as map, but whose results are the unique affine expressions of map. More...
 
AffineMap inversePermutation (AffineMap map)
 Returns a map of codomain to domain dimensions such that the first codomain dimension for a particular domain dimension is selected. More...
 
AffineMap inverseAndBroadcastProjectedPermutation (AffineMap map)
 Return the reverse map of a projected permutation where the projected dimensions are transformed into 0s. More...
 
AffineMap concatAffineMaps (ArrayRef< AffineMap > maps)
 Concatenates a list of maps into a single AffineMap, stepping over potentially empty maps. More...
 
AffineMap projectDims (AffineMap map, const llvm::SmallBitVector &projectedDimensions, bool compressDimsFlag=false)
 Returns the map that results from projecting out the dimensions specified in projectedDimensions. More...
 
AffineMap projectSymbols (AffineMap map, const llvm::SmallBitVector &projectedSymbols, bool compressSymbolsFlag=false)
 Symbol counterpart of projectDims. More...
 
AffineMap getProjectedMap (AffineMap map, const llvm::SmallBitVector &projectedDimensions, bool compressDimsFlag=true, bool compressSymbolsFlag=true)
 Calls projectDims(map, projectedDimensions, compressDimsFlag). More...
 
llvm::SmallBitVector getUnusedDimsBitVector (ArrayRef< AffineMap > maps)
 
llvm::SmallBitVector getUnusedSymbolsBitVector (ArrayRef< AffineMap > maps)
 
AffineMap expandDimsToRank (AffineMap map, int64_t rank, const llvm::SmallBitVector &projectedDimensions)
 Expand map to operate on rank dims while projecting out the dims in projectedDimensions. More...
 
raw_ostream & operator<< (raw_ostream &os, AffineMap map)
 
template<typename T >
SmallVector< T > applyPermutationMap (AffineMap map, llvm::ArrayRef< T > source)
 Apply a permutation from map to source and return the result. More...
 
template<typename AffineExprContainer >
static void getMaxDimAndSymbol (ArrayRef< AffineExprContainer > exprsList, int64_t &maxDim, int64_t &maxSym)
 Calculates maximum dimension and symbol positions from the expressions in exprsLists and stores them in maxDim and maxSym respectively. More...
 
StringRef toString (AsmResourceEntryKind kind)
 
void registerAsmPrinterCLOptions ()
 Register a set of useful command-line options that can be used to configure various flags within the AsmPrinter. More...
 
raw_ostream & operator<< (raw_ostream &os, Attribute attr)
 
inline ::llvm::hash_code hash_value (Attribute arg)
 
inline ::llvm::hash_code hash_value (const NamedAttribute &arg)
 
raw_ostream & operator<< (raw_ostream &, Block &)
 
bool operator== (StringAttr lhs, std::nullptr_t)
 Define comparisons for StringAttr against nullptr and itself to avoid the StringRef overloads from being chosen when not desirable. More...
 
bool operator!= (StringAttr lhs, std::nullptr_t)
 
bool operator== (StringAttr lhs, StringAttr rhs)
 
bool operator!= (StringAttr lhs, StringAttr rhs)
 
bool operator== (StringAttr lhs, StringRef rhs)
 Allow direct comparison with StringRef. More...
 
bool operator!= (StringAttr lhs, StringRef rhs)
 
bool operator== (StringRef lhs, StringAttr rhs)
 
bool operator!= (StringRef lhs, StringAttr rhs)
 
AffineMap makeStridedLinearLayoutMap (ArrayRef< int64_t > strides, int64_t offset, MLIRContext *context)
 Given a list of strides (in which ShapedType::kDynamic represents a dynamic value), return the single result AffineMap which represents the linearized strided layout map. More...
 
std::optional< llvm::SmallDenseSet< unsigned > > computeRankReductionMask (ArrayRef< int64_t > originalShape, ArrayRef< int64_t > reducedShape, bool matchDynamic=false)
 Given an originalShape and a reducedShape assumed to be a subset of originalShape with some 1 entries erased, return the set of indices that specifies which of the entries of originalShape are dropped to obtain reducedShape. More...
 
SliceVerificationResult isRankReducedType (ShapedType originalType, ShapedType candidateReducedType)
 Check if originalType can be rank reduced to candidateReducedType type by dropping some dimensions with static size 1. More...
 
LogicalResult getStridesAndOffset (MemRefType t, SmallVectorImpl< int64_t > &strides, int64_t &offset)
 Returns the strides of the MemRef if the layout map is in strided form. More...
 
std::pair< SmallVector< int64_t >, int64_t > getStridesAndOffset (MemRefType t)
 Wrapper around getStridesAndOffset(MemRefType, SmallVectorImpl<int64_t>, int64_t) that will assert if the logical result is not succeeded. More...
 
MemRefType canonicalizeStridedLayout (MemRefType t)
 Return a version of t with identity layout if it can be determined statically that the layout is the canonical contiguous strided layout. More...
 
AffineExpr makeCanonicalStridedLayoutExpr (ArrayRef< int64_t > sizes, ArrayRef< AffineExpr > exprs, MLIRContext *context)
 Given MemRef sizes that are either static or dynamic, returns the canonical "contiguous" strides AffineExpr. More...
 
AffineExpr makeCanonicalStridedLayoutExpr (ArrayRef< int64_t > sizes, MLIRContext *context)
 Return the result of makeCanonicalStrudedLayoutExpr for the common case where exprs is {d0, d1, .., d_(sizes.size()-1)}. More...
 
bool isStrided (MemRefType t)
 Return "true" if the layout for t is compatible with strided semantics. More...
 
bool isLastMemrefDimUnitStride (MemRefType type)
 Return "true" if the last dimension of the given type has a static unit stride. More...
 
bool trailingNDimsContiguous (MemRefType type, int64_t n)
 Return "true" if the last N dimensions of the given type are contiguous. More...
 
raw_ostream & operator<< (raw_ostream &os, const DiagnosticArgument &arg)
 
raw_ostream & operator<< (raw_ostream &os, const Diagnostic &diag)
 
InFlightDiagnostic emitError (Location loc)
 Utility method to emit an error message using this location. More...
 
InFlightDiagnostic emitError (Location loc, const Twine &message)
 
InFlightDiagnostic emitWarning (Location loc)
 Utility method to emit a warning message using this location. More...
 
InFlightDiagnostic emitWarning (Location loc, const Twine &message)
 
InFlightDiagnostic emitRemark (Location loc)
 Utility method to emit a remark message using this location. More...
 
InFlightDiagnostic emitRemark (Location loc, const Twine &message)
 
template<typename... Args>
LogicalResult emitOptionalError (std::optional< Location > loc, Args &&...args)
 Overloads of the above emission functions that take an optionally null location. More...
 
template<typename... Args>
LogicalResult emitOptionalWarning (std::optional< Location > loc, Args &&...args)
 
template<typename... Args>
LogicalResult emitOptionalRemark (std::optional< Location > loc, Args &&...args)
 
inline ::llvm::hash_code hash_value (IntegerSet arg)
 
raw_ostream & operator<< (raw_ostream &os, const Location &loc)
 
inline ::llvm::hash_code hash_value (Location arg)
 
detail::constant_op_matcher m_Constant ()
 Matches a constant foldable operation. More...
 
detail::AttrOpMatcher m_Attr (StringRef attrName)
 Matches a named attribute operation. More...
 
detail::NameOpMatcher m_Op (StringRef opName)
 Matches a named operation. More...
 
template<typename AttrT >
detail::constant_op_binder< AttrT > m_Constant (AttrT *bind_value)
 Matches a value from a constant foldable operation and writes the value to bind_value. More...
 
template<typename AttrT >
detail::AttrOpBinder< AttrT > m_Attr (StringRef attrName, AttrT *bindValue)
 Matches a named attribute operation and writes the value to bind_value. More...
 
detail::constant_float_predicate_matcher m_AnyZeroFloat ()
 Matches a constant scalar / vector splat / tensor splat float (both positive and negative) zero. More...
 
detail::constant_float_predicate_matcher m_PosZeroFloat ()
 Matches a constant scalar / vector splat / tensor splat float positive zero. More...
 
detail::constant_float_predicate_matcher m_NegZeroFloat ()
 Matches a constant scalar / vector splat / tensor splat float negative zero. More...
 
detail::constant_float_predicate_matcher m_OneFloat ()
 Matches a constant scalar / vector splat / tensor splat float ones. More...
 
detail::constant_float_predicate_matcher m_PosInfFloat ()
 Matches a constant scalar / vector splat / tensor splat float positive infinity. More...
 
detail::constant_float_predicate_matcher m_NegInfFloat ()
 Matches a constant scalar / vector splat / tensor splat float negative infinity. More...
 
detail::constant_int_predicate_matcher m_Zero ()
 Matches a constant scalar / vector splat / tensor splat integer zero. More...
 
detail::constant_int_predicate_matcher m_NonZero ()
 Matches a constant scalar / vector splat / tensor splat integer that is any non-zero value. More...
 
detail::constant_int_predicate_matcher m_One ()
 Matches a constant scalar / vector splat / tensor splat integer one. More...
 
template<typename OpClass >
detail::op_matcher< OpClass > m_Op ()
 Matches the given OpClass. More...
 
template<typename Pattern >
bool matchPattern (Value value, const Pattern &pattern)
 Entry point for matching a pattern over a Value. More...
 
template<typename Pattern >
bool matchPattern (Operation *op, const Pattern &pattern)
 Entry point for matching a pattern over an Operation. More...
 
template<typename Pattern >
bool matchPattern (Attribute attr, const Pattern &pattern)
 Entry point for matching a pattern over an Attribute. More...
 
detail::constant_float_value_binder m_ConstantFloat (FloatAttr::ValueType *bind_value)
 Matches a constant holding a scalar/vector/tensor float (splat) and writes the float value to bind_value. More...
 
detail::constant_int_value_binder m_ConstantInt (IntegerAttr::ValueType *bind_value)
 Matches a constant holding a scalar/vector/tensor integer (splat) and writes the integer value to bind_value. More...
 
template<typename OpType , typename... Matchers>
auto m_Op (Matchers... matchers)
 
void registerMLIRContextCLOptions ()
 Register a set of useful command-line options that can be used to configure various flags within the MLIRContext. More...
 
LogicalResult convertFromAttribute (int64_t &storage, Attribute attr, function_ref< InFlightDiagnostic()> emitError)
 Convert an IntegerAttr attribute to an int64_t, or return an error if the attribute isn't an IntegerAttr. More...
 
Attribute convertToAttribute (MLIRContext *ctx, int64_t storage)
 Convert the provided int64_t to an IntegerAttr attribute. More...
 
LogicalResult convertFromAttribute (MutableArrayRef< int64_t > storage, Attribute attr, function_ref< InFlightDiagnostic()> emitError)
 Convert a DenseI64ArrayAttr to the provided storage. More...
 
LogicalResult convertFromAttribute (MutableArrayRef< int32_t > storage, Attribute attr, function_ref< InFlightDiagnostic()> emitError)
 Convert a DenseI32ArrayAttr to the provided storage. More...
 
Attribute convertToAttribute (MLIRContext *ctx, ArrayRef< int64_t > storage)
 Convert the provided ArrayRef<int64_t> to a DenseI64ArrayAttr attribute. More...
 
bool operator== (OpState lhs, OpState rhs)
 
bool operator!= (OpState lhs, OpState rhs)
 
raw_ostream & operator<< (raw_ostream &os, OpFoldResult ofr)
 Allow printing to a stream. More...
 
raw_ostream & operator<< (raw_ostream &os, OpState op)
 Allow printing to a stream. More...
 
raw_ostream & operator<< (raw_ostream &os, const Operation &op)
 
raw_ostream & operator<< (raw_ostream &os, OperationName info)
 
llvm::hash_code hash_value (OperationName arg)
 
 LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ()
 Enable Bitmask enums for OperationEquivalence::Flags. More...
 
llvm::hash_code hash_value (const AsmDialectResourceHandle &param)
 
template<typename AsmPrinterT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, Type type)
 
template<typename AsmPrinterT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, Attribute attr)
 
template<typename AsmPrinterT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, const APFloat &value)
 
template<typename AsmPrinterT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, float value)
 
template<typename AsmPrinterT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, double value)
 
template<typename AsmPrinterT , typename T , std::enable_if_t<!std::is_convertible< T &, Value & >::value &&!std::is_convertible< T &, Type & >::value &&!std::is_convertible< T &, Attribute & >::value &&!std::is_convertible< T &, ValueRange >::value &&!std::is_convertible< T &, APFloat & >::value &&!llvm::is_one_of< T, bool, float, double >::value, T > * = nullptr>
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, const T &other)
 
template<typename AsmPrinterT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, bool value)
 
template<typename AsmPrinterT , typename ValueRangeT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, const ValueTypeRange< ValueRangeT > &types)
 
template<typename AsmPrinterT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, const TypeRange &types)
 
template<typename AsmPrinterT , typename T >
std::enable_if_t< std::is_same< AsmPrinter, AsmPrinterT >::value &&std::is_convertible< T &, ValueRange >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, const T &other)=delete
 
template<typename AsmPrinterT , typename ElementT >
std::enable_if_t< std::is_base_of< AsmPrinter, AsmPrinterT >::value, AsmPrinterT & > operator<< (AsmPrinterT &p, ArrayRef< ElementT > types)
 
OpAsmPrinteroperator<< (OpAsmPrinter &p, Value value)
 
template<typename T , std::enable_if_t< std::is_convertible< T &, ValueRange >::value &&!std::is_convertible< T &, Value & >::value, T > * = nullptr>
OpAsmPrinteroperator<< (OpAsmPrinter &p, const T &values)
 
OpAsmPrinteroperator<< (OpAsmPrinter &p, Block *value)
 
void printDimensionList (OpAsmPrinter &printer, Operation *op, ArrayRef< int64_t > dimensions)
 
ParseResult parseDimensionList (OpAsmParser &parser, DenseI64ArrayAttr &dimensions)
 
bool mayHaveSSADominance (Region &region)
 Return "true" if the given region may have SSA dominance. More...
 
bool mayBeGraphRegion (Region &region)
 Return "true" if the given region may be a graph region without SSA dominance. More...
 
raw_ostream & operator<< (raw_ostream &os, SymbolTable::Visibility visibility)
 
template<typename IteratorT , typename FuncT >
LogicalResult failableParallelForEach (MLIRContext *context, IteratorT begin, IteratorT end, FuncT &&func)
 Invoke the given function on the elements between [begin, end) asynchronously. More...
 
template<typename RangeT , typename FuncT >
LogicalResult failableParallelForEach (MLIRContext *context, RangeT &&range, FuncT &&func)
 Invoke the given function on the elements in the provided range asynchronously. More...
 
template<typename FuncT >
LogicalResult failableParallelForEachN (MLIRContext *context, size_t begin, size_t end, FuncT &&func)
 Invoke the given function on the elements between [begin, end) asynchronously. More...
 
template<typename IteratorT , typename FuncT >
void parallelForEach (MLIRContext *context, IteratorT begin, IteratorT end, FuncT &&func)
 Invoke the given function on the elements between [begin, end) asynchronously. More...
 
template<typename RangeT , typename FuncT >
void parallelForEach (MLIRContext *context, RangeT &&range, FuncT &&func)
 Invoke the given function on the elements in the provided range asynchronously. More...
 
template<typename FuncT >
void parallelFor (MLIRContext *context, size_t begin, size_t end, FuncT &&func)
 Invoke the given function on the elements between [begin, end) asynchronously. More...
 
inline ::llvm::hash_code hash_value (TypeRange arg)
 Make TypeRange hashable. More...
 
raw_ostream & operator<< (raw_ostream &os, const TypeRange &types)
 Emit a type range to the given output stream. More...
 
template<typename RangeT >
bool operator== (ArrayRef< Type > lhs, const ValueTypeRange< RangeT > &rhs)
 
raw_ostream & operator<< (raw_ostream &os, Type type)
 
inline ::llvm::hash_code hash_value (Type arg)
 
Type getElementTypeOrSelf (Type type)
 Return the element type or return the type itself. More...
 
Type getElementTypeOrSelf (Attribute attr)
 Return the element type or return the type itself. More...
 
Type getElementTypeOrSelf (Value val)
 
SmallVector< Type, 10 > getFlattenedTypes (TupleType t)
 Get the types within a nested Tuple. More...
 
bool isOpaqueTypeWithName (Type type, StringRef dialect, StringRef typeData)
 Return true if the specified type is an opaque type with the specified dialect and typeData. More...
 
LogicalResult verifyCompatibleShape (ArrayRef< int64_t > shape1, ArrayRef< int64_t > shape2)
 Returns success if the given two shapes are compatible. More...
 
LogicalResult verifyCompatibleShape (Type type1, Type type2)
 Returns success if the given two types have compatible shape. More...
 
LogicalResult verifyCompatibleShapes (TypeRange types1, TypeRange types2)
 Returns success if the given two arrays have the same number of elements and each pair wise entries have compatible shape. More...
 
LogicalResult verifyCompatibleShapes (TypeRange types)
 Returns success if all given types have compatible shapes. More...
 
LogicalResult verifyCompatibleDims (ArrayRef< int64_t > dims)
 Dimensions are compatible if all non-dynamic dims are equal. More...
 
TypeRange insertTypesInto (TypeRange oldTypes, ArrayRef< unsigned > indices, TypeRange newTypes, SmallVectorImpl< Type > &storage)
 Insert a set of newTypes into oldTypes at the given indices. More...
 
TypeRange filterTypesOut (TypeRange types, const BitVector &indices, SmallVectorImpl< Type > &storage)
 Filters out any elements referenced by indices. More...
 
raw_ostream & operator<< (raw_ostream &os, const IRUnit &unit)
 
raw_ostream & operator<< (raw_ostream &os, Value value)
 
inline ::llvm::hash_code hash_value (Value arg)
 Make Value hashable. More...
 
LogicalResult verify (Operation *op, bool verifyRecursively=true)
 Perform (potentially expensive) checks of invariants, used to detect compiler bugs, on this operation and any nested operations. More...
 
LogicalResult parseSourceFile (const llvm::SourceMgr &sourceMgr, Block *block, const ParserConfig &config, LocationAttr *sourceFileLoc=nullptr)
 This parses the file specified by the indicated SourceMgr and appends parsed operations to the given block. More...
 
LogicalResult parseSourceFile (const std::shared_ptr< llvm::SourceMgr > &sourceMgr, Block *block, const ParserConfig &config, LocationAttr *sourceFileLoc=nullptr)
 An overload with a source manager that may have references taken during the parsing process, and whose lifetime can be freely extended (such that the source manager is not destroyed before the parsed IR). More...
 
LogicalResult parseSourceFile (llvm::StringRef filename, Block *block, const ParserConfig &config, LocationAttr *sourceFileLoc=nullptr)
 This parses the file specified by the indicated filename and appends parsed operations to the given block. More...
 
LogicalResult parseSourceFile (llvm::StringRef filename, llvm::SourceMgr &sourceMgr, Block *block, const ParserConfig &config, LocationAttr *sourceFileLoc=nullptr)
 This parses the file specified by the indicated filename using the provided SourceMgr and appends parsed operations to the given block. More...
 
LogicalResult parseSourceFile (llvm::StringRef filename, const std::shared_ptr< llvm::SourceMgr > &sourceMgr, Block *block, const ParserConfig &config, LocationAttr *sourceFileLoc=nullptr)
 An overload with a source manager that may have references taken during the parsing process, and whose lifetime can be freely extended (such that the source manager is not destroyed before the parsed IR). More...
 
LogicalResult parseSourceString (llvm::StringRef sourceStr, Block *block, const ParserConfig &config, StringRef sourceName="", LocationAttr *sourceFileLoc=nullptr)
 This parses the IR string and appends parsed operations to the given block. More...
 
template<typename ContainerOpT = Operation *>
OwningOpRef< ContainerOpT > parseSourceFile (const llvm::SourceMgr &sourceMgr, const ParserConfig &config)
 This parses the file specified by the indicated SourceMgr. More...
 
template<typename ContainerOpT = Operation *>
OwningOpRef< ContainerOpT > parseSourceFile (const std::shared_ptr< llvm::SourceMgr > &sourceMgr, const ParserConfig &config)
 An overload with a source manager that may have references taken during the parsing process, and whose lifetime can be freely extended (such that the source manager is not destroyed before the parsed IR). More...
 
template<typename ContainerOpT = Operation *>
OwningOpRef< ContainerOpT > parseSourceFile (StringRef filename, const ParserConfig &config)
 This parses the file specified by the indicated filename. More...
 
template<typename ContainerOpT = Operation *>
OwningOpRef< ContainerOpT > parseSourceFile (llvm::StringRef filename, llvm::SourceMgr &sourceMgr, const ParserConfig &config)
 This parses the file specified by the indicated filename using the provided SourceMgr. More...
 
template<typename ContainerOpT = Operation *>
OwningOpRef< ContainerOpT > parseSourceFile (llvm::StringRef filename, const std::shared_ptr< llvm::SourceMgr > &sourceMgr, const ParserConfig &config)
 An overload with a source manager that may have references taken during the parsing process, and whose lifetime can be freely extended (such that the source manager is not destroyed before the parsed IR). More...
 
template<typename ContainerOpT = Operation *>
OwningOpRef< ContainerOpT > parseSourceString (llvm::StringRef sourceStr, const ParserConfig &config, StringRef sourceName="")
 This parses the provided string containing MLIR. More...
 
std::string makeReproducer (StringRef anchorName, const llvm::iterator_range< OpPassManager::pass_iterator > &passes, Operation *op, StringRef outputFile, bool disableThreads=false, bool verifyPasses=false)
 
void registerPassManagerCLOptions ()
 Register a set of useful command-line options that can be used to configure a pass manager. More...
 
LogicalResult applyPassManagerCLOptions (PassManager &pm)
 Apply any values provided to the pass manager options that were registered with 'registerPassManagerOptions'. More...
 
void applyDefaultTimingPassManagerCLOptions (PassManager &pm)
 Apply any values provided to the timing manager options that were registered with registerDefaultTimingManagerOptions. More...
 
void registerPassPipeline (StringRef arg, StringRef description, const PassRegistryFunction &function, std::function< void(function_ref< void(const detail::PassOptions &)>)> optHandler)
 Register a specific dialect pipeline registry function with the system, typically used through the PassPipelineRegistration template. More...
 
void registerPass (const PassAllocatorFunction &function)
 Register a specific dialect pass allocator function with the system, typically used through the PassRegistration template. More...
 
LogicalResult parsePassPipeline (StringRef pipeline, OpPassManager &pm, raw_ostream &errorStream=llvm::errs())
 Parse the textual representation of a pass pipeline, adding the result to 'pm' on success. More...
 
FailureOr< OpPassManagerparsePassPipeline (StringRef pipeline, raw_ostream &errorStream=llvm::errs())
 Parse the given textual representation of a pass pipeline, and return the parsed pipeline on success. More...
 
std::unique_ptr< PasscreateReductionTreePass ()
 
std::unique_ptr< PasscreateOptReductionPass ()
 
template<typename T >
static std::string debugString (T &&op)
 
std::unique_ptr< llvm::MemoryBuffer > openInputFile (llvm::StringRef inputFilename, std::string *errorMessage=nullptr)
 Open the file specified by its name for reading. More...
 
std::unique_ptr< llvm::MemoryBuffer > openInputFile (llvm::StringRef inputFilename, llvm::Align alignment, std::string *errorMessage=nullptr)
 Open the file specified by its name for reading, with the given buffer alignment constraint. More...
 
std::unique_ptr< llvm::ToolOutputFile > openOutputFile (llvm::StringRef outputFilename, std::string *errorMessage=nullptr)
 Open the file specified by its name for writing. More...
 
LogicalResult success (bool isSuccess=true)
 Utility function to generate a LogicalResult. More...
 
LogicalResult failure (bool isFailure=true)
 Utility function to generate a LogicalResult. More...
 
bool succeeded (LogicalResult result)
 Utility function that returns true if the provided LogicalResult corresponds to a success value. More...
 
bool failed (LogicalResult result)
 Utility function that returns true if the provided LogicalResult corresponds to a failure value. More...
 
template<typename T , typename = std::enable_if_t<!std::is_convertible_v<T, bool>>>
auto success (T &&t)
 Wrap a value on the success path in a FailureOr of the same value type. More...
 
int64_t ceilDiv (int64_t lhs, int64_t rhs)
 Returns the result of MLIR's ceildiv operation on constants. More...
 
int64_t floorDiv (int64_t lhs, int64_t rhs)
 Returns the result of MLIR's floordiv operation on constants. More...
 
int64_t mod (int64_t lhs, int64_t rhs)
 Returns MLIR's mod operation on constants. More...
 
llvm::raw_ostream & thread_safe_nulls ()
 Returns a raw output stream that simply discards the output, but in a thread-safe manner. More...
 
void registerDefaultTimingManagerCLOptions ()
 Register a set of useful command-line options that can be used to configure a DefaultTimingManager. More...
 
void applyDefaultTimingManagerCLOptions (DefaultTimingManager &tm)
 Apply any values that were registered with 'registerDefaultTimingManagerOptions' to a DefaultTimingManager. More...
 
LogicalResult splitAndProcessBuffer (std::unique_ptr< llvm::MemoryBuffer > originalBuffer, ChunkBufferHandler processChunkBuffer, raw_ostream &os, llvm::StringRef inputSplitMarker=kDefaultSplitMarker, llvm::StringRef outputSplitMarker="")
 Splits the specified buffer on a marker (// ----- by default), processes each chunk independently according to the normal processChunkBuffer logic, and writes all results to os. More...
 
inline ::llvm::hash_code hash_value (TypeID id)
 Enable hashing TypeID. More...
 
static void registerAllToLLVMIRTranslations (DialectRegistry &registry)
 Registers all dialects that can be translated to LLVM IR and the corresponding translation interfaces. More...
 
static void registerAllGPUToLLVMIRTranslations (DialectRegistry &registry)
 Registers all the translations to LLVM IR required by GPU passes. More...
 
static void registerAllFromLLVMIRTranslations (DialectRegistry &registry)
 Registers all dialects that can be translated from LLVM IR and the corresponding translation interfaces. More...
 
void registerAMXDialectTranslation (DialectRegistry &registry)
 Register the AMX dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerAMXDialectTranslation (MLIRContext &context)
 Register the AMX dialect and the translation from it in the registry associated with the given context. More...
 
void registerArmNeonDialectTranslation (DialectRegistry &registry)
 Register the ArmNeon dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerArmNeonDialectTranslation (MLIRContext &context)
 Register the ArmNeon dialect and the translation from it in the registry associated with the given context. More...
 
void registerArmSMEDialectTranslation (DialectRegistry &registry)
 Register the ArmSME dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerArmSMEDialectTranslation (MLIRContext &context)
 Register the ArmSME dialect and the translation from it in the registry associated with the given context. More...
 
void registerArmSVEDialectTranslation (DialectRegistry &registry)
 Register the ArmSVE dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerArmSVEDialectTranslation (MLIRContext &context)
 Register the ArmSVE dialect and the translation from it in the registry associated with the given context. More...
 
void registerBuiltinDialectTranslation (DialectRegistry &registry)
 Register the translation from the builtin dialect to the LLVM IR in the given registry. More...
 
void registerBuiltinDialectTranslation (MLIRContext &context)
 Register the translation from the builtin dialect in the registry associated with the given context. More...
 
void registerGPUDialectTranslation (DialectRegistry &registry)
 Register the GPU dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerGPUDialectTranslation (MLIRContext &context)
 Register the GPU dialect and the translation from it in the registry associated with the given context. More...
 
void registerLLVMDialectImport (DialectRegistry &registry)
 Registers the LLVM dialect and its import from LLVM IR in the given registry. More...
 
void registerLLVMDialectImport (MLIRContext &context)
 Registers the LLVM dialect and its import from LLVM IR with the given context. More...
 
void registerLLVMDialectTranslation (DialectRegistry &registry)
 Register the LLVM dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerLLVMDialectTranslation (MLIRContext &context)
 Register the LLVM dialect and the translation from it in the registry associated with the given context. More...
 
void registerNVVMDialectImport (DialectRegistry &registry)
 Registers the NVVM dialect and its import from LLVM IR in the given registry. More...
 
void registerNVVMDialectImport (MLIRContext &context)
 Registers the NVVM dialect and its import from LLVM IR with the given context. More...
 
void registerNVVMDialectTranslation (DialectRegistry &registry)
 Register the NVVM dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerNVVMDialectTranslation (MLIRContext &context)
 Register the NVVM dialect and the translation from it in the registry associated with the given context. More...
 
void registerOpenACCDialectTranslation (DialectRegistry &registry)
 Register the OpenACC dialect and the translation to the LLVM IR in the given registry;. More...
 
void registerOpenACCDialectTranslation (MLIRContext &context)
 Register the OpenACC dialect and the translation in the registry associated with the given context. More...
 
void registerOpenMPDialectTranslation (DialectRegistry &registry)
 Register the OpenMP dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerOpenMPDialectTranslation (MLIRContext &context)
 Register the OpenMP dialect and the translation from it in the registry associated with the given context. More...
 
void registerROCDLDialectTranslation (DialectRegistry &registry)
 Register the ROCDL dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerROCDLDialectTranslation (MLIRContext &context)
 Register the ROCDL dialect and the translation from it in the registry associated with the given context. More...
 
void registerSPIRVDialectTranslation (DialectRegistry &registry)
 Register the SPIR-V dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerSPIRVDialectTranslation (MLIRContext &context)
 Register the SPIR-V dialect and the translation from it in the registry associated with the given context. More...
 
void registerVCIXDialectTranslation (DialectRegistry &registry)
 Register the VCIX dialect and the translation from it to the LLVM IR in the given registry. More...
 
void registerVCIXDialectTranslation (MLIRContext &context)
 Register the VCIX dialect and the translation from it in the registry associated with the given context. More...
 
void registerX86VectorDialectTranslation (DialectRegistry &registry)
 Register the X86Vector dialect and the translation from it to the LLVM IR in the given registry;. More...
 
void registerX86VectorDialectTranslation (MLIRContext &context)
 Register the X86Vector dialect and the translation from it in the registry associated with the given context. More...
 
std::unique_ptr< llvm::Module > translateModuleToLLVMIR (Operation *module, llvm::LLVMContext &llvmContext, llvm::StringRef name="LLVMDialectModule")
 Translate operation that satisfies LLVM dialect module requirements into an LLVM IR module living in the given context. More...
 
OwningOpRef< ModuleOp > translateLLVMIRToModule (std::unique_ptr< llvm::Module > llvmModule, MLIRContext *context, bool emitExpensiveWarnings=true, bool dropDICompositeTypeElements=false)
 Translates the LLVM module into an MLIR module living in the given context. More...
 
DataLayoutSpecInterface translateDataLayout (const llvm::DataLayout &dataLayout, MLIRContext *context)
 Translate the given LLVM data layout into an MLIR equivalent using the DLTI dialect. More...
 
LogicalResult MlirLspServerMain (int argc, char **argv, DialectRegistry &registry)
 Implementation for tools like mlir-lsp-server. More...
 
std::pair< std::string, std::string > registerAndParseCLIOptions (int argc, char **argv, llvm::StringRef toolName, DialectRegistry &registry)
 Register and parse command line options. More...
 
LogicalResult MlirOptMain (llvm::raw_ostream &outputStream, std::unique_ptr< llvm::MemoryBuffer > buffer, DialectRegistry &registry, const MlirOptMainConfig &config)
 Perform the core processing behind mlir-opt. More...
 
LogicalResult MlirOptMain (int argc, char **argv, llvm::StringRef toolName, DialectRegistry &registry)
 Implementation for tools like mlir-opt. More...
 
LogicalResult MlirOptMain (int argc, char **argv, llvm::StringRef inputFilename, llvm::StringRef outputFilename, DialectRegistry &registry)
 Implementation for tools like mlir-opt. More...
 
int asMainReturnCode (LogicalResult r)
 Helper wrapper to return the result of MlirOptMain directly from main. More...
 
LogicalResult MlirPdllLspServerMain (int argc, char **argv)
 Implementation for tools like mlir-pdll-lsp-server. More...
 
LogicalResult mlirQueryMain (int argc, char **argv, MLIRContext &context, const mlir::query::matcher::Registry &matcherRegistry)
 
LogicalResult mlirReduceMain (int argc, char **argv, MLIRContext &context)
 
int MlirTblgenMain (int argc, char **argv)
 Main Program for tools like 'mlir-tblgen' with custom backends. More...
 
LogicalResult mlirTranslateMain (int argc, char **argv, StringRef toolName)
 Translate to/from an MLIR module from/to an external representation (e.g. More...
 
void registerTranslationCLOptions ()
 Register command-line options used by the translation registry. More...
 
OwningOpRef< Operation * > parseSourceFileForTool (const std::shared_ptr< llvm::SourceMgr > &sourceMgr, const ParserConfig &config, bool insertImplicitModule)
 This parses the file specified by the indicated SourceMgr. More...
 
LogicalResult TableGenLspServerMain (int argc, char **argv)
 Implementation for tools like tblgen-lsp-server. More...
 
FailureOr< bool > transformCFGToSCF (Region &region, CFGToSCFInterface &interface, DominanceInfo &dominanceInfo)
 Transformation lifting any dialect implementing control flow graph operations to a dialect implementing structured control flow operations. More...
 
void populateCommutativityUtilsPatterns (RewritePatternSet &patterns)
 Populates the commutativity utility patterns. More...
 
size_t controlFlowSink (RegionRange regions, DominanceInfo &domInfo, function_ref< bool(Operation *, Region *)> shouldMoveIntoRegion, function_ref< void(Operation *, Region *)> moveIntoRegion)
 Given a list of regions, perform control flow sinking on them. More...
 
void getSinglyExecutedRegionsToSink (RegionBranchOpInterface branch, SmallVectorImpl< Region * > &regions)
 Populates regions with regions of the provided region branch op that are executed at most once at that are reachable given the current operands of the op. More...
 
void eliminateCommonSubExpressions (RewriterBase &rewriter, DominanceInfo &domInfo, Operation *op, bool *changed=nullptr)
 Eliminate common subexpressions within the given operation. More...
 
FailureOr< Operation * > convertOpResultTypes (Operation *op, ValueRange operands, const TypeConverter &converter, ConversionPatternRewriter &rewriter)
 Generic utility to convert op result types according to type converter without knowing exact op type. More...
 
void populateFunctionOpInterfaceTypeConversionPattern (StringRef functionLikeOpName, RewritePatternSet &patterns, const TypeConverter &converter)
 Add a pattern to the given pattern list to convert the signature of a FunctionOpInterface op with the given type converter. More...
 
template<typename FuncOpT >
void populateFunctionOpInterfaceTypeConversionPattern (RewritePatternSet &patterns, const TypeConverter &converter)
 
void populateAnyFunctionOpInterfaceTypeConversionPattern (RewritePatternSet &patterns, const TypeConverter &converter)
 
void registerConversionPDLFunctions (RewritePatternSet &patterns)
 Register the dialect conversion PDL functions with the given pattern set. More...
 
LogicalResult applyPartialConversion (ArrayRef< Operation * > ops, const ConversionTarget &target, const FrozenRewritePatternSet &patterns, ConversionConfig config=ConversionConfig())
 Below we define several entry points for operation conversion. More...
 
LogicalResult applyPartialConversion (Operation *op, const ConversionTarget &target, const FrozenRewritePatternSet &patterns, ConversionConfig config=ConversionConfig())
 
LogicalResult applyFullConversion (ArrayRef< Operation * > ops, const ConversionTarget &target, const FrozenRewritePatternSet &patterns, ConversionConfig config=ConversionConfig())
 Apply a complete conversion on the given operations, and all nested operations. More...
 
LogicalResult applyFullConversion (Operation *op, const ConversionTarget &target, const FrozenRewritePatternSet &patterns, ConversionConfig config=ConversionConfig())
 
LogicalResult applyAnalysisConversion (ArrayRef< Operation * > ops, ConversionTarget &target, const FrozenRewritePatternSet &patterns, ConversionConfig config=ConversionConfig())
 Apply an analysis conversion on the given operations, and all nested operations. More...
 
LogicalResult applyAnalysisConversion (Operation *op, ConversionTarget &target, const FrozenRewritePatternSet &patterns, ConversionConfig config=ConversionConfig())
 
LogicalResult applyPatternsAndFoldGreedily (Region &region, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config=GreedyRewriteConfig(), bool *changed=nullptr)
 Rewrite ops in the given region, which must be isolated from above, by repeatedly applying the highest benefit patterns in a greedy worklist driven manner until a fixpoint is reached. More...
 
LogicalResult applyPatternsAndFoldGreedily (Operation *op, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config=GreedyRewriteConfig(), bool *changed=nullptr)
 Rewrite ops nested under the given operation, which must be isolated from above, by repeatedly applying the highest benefit patterns in a greedy worklist driven manner until a fixpoint is reached. More...
 
LogicalResult applyOpPatternsAndFold (ArrayRef< Operation * > ops, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config=GreedyRewriteConfig(), bool *changed=nullptr, bool *allErased=nullptr)
 Rewrite the specified ops by repeatedly applying the highest benefit patterns in a greedy worklist driven manner until a fixpoint is reached. More...
 
LogicalResult inlineRegion (InlinerInterface &interface, Region *src, Operation *inlinePoint, IRMapping &mapper, ValueRange resultsToReplace, TypeRange regionResultTypes, std::optional< Location > inlineLoc=std::nullopt, bool shouldCloneInlinedRegion=true)
 This function inlines a region, 'src', into another. More...
 
LogicalResult inlineRegion (InlinerInterface &interface, Region *src, Block *inlineBlock, Block::iterator inlinePoint, IRMapping &mapper, ValueRange resultsToReplace, TypeRange regionResultTypes, std::optional< Location > inlineLoc=std::nullopt, bool shouldCloneInlinedRegion=true)
 
LogicalResult inlineRegion (InlinerInterface &interface, Region *src, Operation *inlinePoint, ValueRange inlinedOperands, ValueRange resultsToReplace, std::optional< Location > inlineLoc=std::nullopt, bool shouldCloneInlinedRegion=true)
 This function is an overload of the above 'inlineRegion' that allows for providing the set of operands ('inlinedOperands') that should be used in-favor of the region arguments when inlining. More...
 
LogicalResult inlineRegion (InlinerInterface &interface, Region *src, Block *inlineBlock, Block::iterator inlinePoint, ValueRange inlinedOperands, ValueRange resultsToReplace, std::optional< Location > inlineLoc=std::nullopt, bool shouldCloneInlinedRegion=true)
 
LogicalResult inlineCall (InlinerInterface &interface, CallOpInterface call, CallableOpInterface callable, Region *src, bool shouldCloneInlinedRegion=true)
 This function inlines a given region, 'src', of a callable operation, 'callable', into the location defined by the given call operation. More...
 
void generateLocationsFromIR (raw_ostream &os, StringRef fileName, Operation *op, OpPrintingFlags flags)
 This function generates new locations from the given IR by snapshotting the IR to the given stream, and using the printed locations within that stream. More...
 
LogicalResult generateLocationsFromIR (StringRef fileName, Operation *op, OpPrintingFlags flags)
 This function generates new locations from the given IR by snapshotting the IR to the given file, and using the printed locations within that file. More...
 
void generateLocationsFromIR (raw_ostream &os, StringRef fileName, StringRef tag, Operation *op, OpPrintingFlags flags)
 This function generates new locations from the given IR by snapshotting the IR to the given stream, and using the printed locations within that stream. More...
 
LogicalResult generateLocationsFromIR (StringRef fileName, StringRef tag, Operation *op, OpPrintingFlags flags)
 This function generates new locations from the given IR by snapshotting the IR to the given file, and using the printed locations within that file. More...
 
std::unique_ptr< PasscreateLocationSnapshotPass (OpPrintingFlags flags, StringRef fileName="", StringRef tag="")
 Create a pass to generate new locations by snapshotting the IR to the given file, and using the printed locations within that file. More...
 
std::unique_ptr< PasscreateLocationSnapshotPass ()
 Overload utilizing pass options for initialization. More...
 
size_t moveLoopInvariantCode (ArrayRef< Region * > regions, function_ref< bool(Value, Region *)> isDefinedOutsideRegion, function_ref< bool(Operation *, Region *)> shouldMoveOutOfRegion, function_ref< void(Operation *, Region *)> moveOutOfRegion)
 Given a list of regions, perform loop-invariant code motion. More...
 
size_t moveLoopInvariantCode (LoopLikeOpInterface loopLike)
 Move side-effect free loop invariant code out of a loop-like op using methods provided by the interface. More...
 
LoopLikeOpInterface hoistLoopInvariantSubsets (RewriterBase &rewriter, LoopLikeOpInterface loopLike)
 Hoist loop-invariant tensor subsets (subset extraction and subset insertion ops) from loop-like ops. More...
 
LogicalResult tryToPromoteMemorySlots (ArrayRef< PromotableAllocationOpInterface > allocators, OpBuilder &builder, const DataLayout &dataLayout, DominanceInfo &dominance, Mem2RegStatistics statistics={})
 Attempts to promote the memory slots of the provided allocators. More...
 
LogicalResult applyPartialOneToNConversion (Operation *op, OneToNTypeConverter &typeConverter, const FrozenRewritePatternSet &patterns)
 Applies the given set of patterns recursively on the given op and adds user materializations where necessary. More...
 
void populateOneToNFunctionOpInterfaceTypeConversionPattern (StringRef functionLikeOpName, TypeConverter &converter, RewritePatternSet &patterns)
 Add a pattern to the given pattern list to convert the signature of a FunctionOpInterface op with the given type converter. More...
 
template<typename FuncOpT >
void populateOneToNFunctionOpInterfaceTypeConversionPattern (TypeConverter &converter, RewritePatternSet &patterns)
 
std::unique_ptr< PasscreateCanonicalizerPass ()
 Creates an instance of the Canonicalizer pass, configured with default settings (which can be overridden by pass options on the command line). More...
 
std::unique_ptr< PasscreateCanonicalizerPass (const GreedyRewriteConfig &config, ArrayRef< std::string > disabledPatterns=std::nullopt, ArrayRef< std::string > enabledPatterns=std::nullopt)
 Creates an instance of the Canonicalizer pass with the specified config. More...
 
std::unique_ptr< PasscreateControlFlowSinkPass ()
 Creates a pass to perform control-flow sinking. More...
 
std::unique_ptr< PasscreateCSEPass ()
 Creates a pass to perform common sub expression elimination. More...
 
std::unique_ptr< PasscreatePrintIRPass (const PrintIRPassOptions &={})
 Creates a pass to print IR on the debug stream. More...
 
std::unique_ptr< PasscreateGenerateRuntimeVerificationPass ()
 Creates a pass that generates IR to verify ops at runtime. More...
 
std::unique_ptr< PasscreateLoopInvariantCodeMotionPass ()
 Creates a loop invariant code motion pass that hoists loop invariant instructions out of the loop. More...
 
std::unique_ptr< PasscreateLoopInvariantSubsetHoistingPass ()
 Creates a pass that hoists loop-invariant subset ops. More...
 
std::unique_ptr< PasscreateStripDebugInfoPass ()
 Creates a pass to strip debug information from a function. More...
 
std::unique_ptr< PasscreatePrintOpStatsPass (raw_ostream &os=llvm::errs())
 Creates a pass which prints the list of ops and the number of occurrences in the module. More...
 
std::unique_ptr< PasscreatePrintOpStatsPass (raw_ostream &os, bool printAsJSON)
 Creates a pass which prints the list of ops and the number of occurrences in the module with the output format option. More...
 
std::unique_ptr< PasscreateInlinerPass ()
 Creates a pass which inlines calls and callable operations as defined by the CallGraph. More...
 
std::unique_ptr< PasscreateInlinerPass (llvm::StringMap< OpPassManager > opPipelines)
 Creates an instance of the inliner pass, and use the provided pass managers when optimizing callable operations with names matching the key type. More...
 
std::unique_ptr< PasscreateInlinerPass (llvm::StringMap< OpPassManager > opPipelines, std::function< void(OpPassManager &)> defaultPipelineBuilder)
 Creates an instance of the inliner pass, and use the provided pass managers when optimizing callable operations with names matching the key type. More...
 
std::unique_ptr< PasscreateRemoveDeadValuesPass ()
 Creates an optimization pass to remove dead values. More...
 
std::unique_ptr< PasscreateSCCPPass ()
 Creates a pass which performs sparse conditional constant propagation over nested operations. More...
 
std::unique_ptr< PasscreateSymbolDCEPass ()
 Creates a pass which delete symbol operations that are unreachable. More...
 
std::unique_ptr< PasscreateSymbolPrivatizePass (ArrayRef< std::string > excludeSymbols={})
 Creates a pass which marks top-level symbol operations as private unless listed in excludeSymbols. More...
 
std::unique_ptr< PasscreateTopologicalSortPass ()
 Creates a pass that recursively sorts nested regions without SSA dominance topologically such that, as much as possible, users of values appear after their producers. More...
 
std::unique_ptr< PasscreateCompositeFixedPointPass (std::string name, llvm::function_ref< void(OpPassManager &)> populateFunc, int maxIterations=10)
 Create composite pass, which runs provided set of passes until fixed point or maximum number of iterations reached. More...
 
template<typename Range >
bool areValuesDefinedAbove (Range values, Region &limit)
 Check if all values in the provided range are defined above the limit region. More...
 
void replaceAllUsesInRegionWith (Value orig, Value replacement, Region &region)
 Replace all uses of orig within the given region with replacement. More...
 
void visitUsedValuesDefinedAbove (Region &region, Region &limit, function_ref< void(OpOperand *)> callback)
 Calls callback for each use of a value within region or its descendants that was defined at the ancestors of the limit. More...
 
void visitUsedValuesDefinedAbove (MutableArrayRef< Region > regions, function_ref< void(OpOperand *)> callback)
 Calls callback for each use of a value within any of the regions provided that was defined in one of the ancestors. More...
 
void getUsedValuesDefinedAbove (Region &region, Region &limit, SetVector< Value > &values)
 Fill values with a list of values defined at the ancestors of the limit region and used within region or its descendants. More...
 
void getUsedValuesDefinedAbove (MutableArrayRef< Region > regions, SetVector< Value > &values)
 Fill values with a list of values used within any of the regions provided but defined in one of the ancestors. More...
 
SmallVector< ValuemakeRegionIsolatedFromAbove (RewriterBase &rewriter, Region &region, llvm::function_ref< bool(Operation *)> cloneOperationIntoRegion=[](Operation *) { return false;})
 Make a region isolated from above. More...
 
LogicalResult simplifyRegions (RewriterBase &rewriter, MutableArrayRef< Region > regions)
 Run a set of structural simplifications over the given regions. More...
 
LogicalResult eraseUnreachableBlocks (RewriterBase &rewriter, MutableArrayRef< Region > regions)
 Erase the unreachable blocks within the provided regions. More...
 
LogicalResult runRegionDCE (RewriterBase &rewriter, MutableArrayRef< Region > regions)
 This function returns success if any operations or arguments were deleted, failure otherwise. More...
 
LogicalResult tryToDestructureMemorySlots (ArrayRef< DestructurableAllocationOpInterface > allocators, OpBuilder &builder, const DataLayout &dataLayout, SROAStatistics statistics={})
 Attempts to destructure the slots of destructurable allocators. More...
 
std::unique_ptr< PasscreatePrintOpGraphPass (raw_ostream &os=llvm::errs())
 Creates a pass to print op graphs. More...
 
static bool createElementwiseOp (ConversionPatternRewriter &builder, gpu::SubgroupMmaElementwiseOp op, Type coopType, ValueRange operands)
 Creates a SPIR-V op to replace the given GPU subgroup mma elementwise op when the elementwise op directly supports with cooperative matrix type. More...
 
bool allOperandsHaveSameCoopMatrixType (ValueRange operands)
 
static Attribute convertToAttribute (MLIRContext *ctx, IntegerOverflowFlags flags)
 
static LogicalResult convertFromAttribute (IntegerOverflowFlags &flags, Attribute attr, function_ref< InFlightDiagnostic()> emitError)
 
static LogicalResult verifyPointerAndJointMatrixType (Operation *op, Type pointer, Type jointMatrix)
 
static LogicalResult verifyJointMatrixMad (spirv::INTELJointMatrixMadOp op)
 
template<typename K , typename V >
static SmallVector< V > getValuesSortedByKeyImpl (ArrayRef< K > keys, ArrayRef< V > values, llvm::function_ref< bool(K, K)> compare)
 Helper to sort values according to matching keys. More...
 
void registerTestRoundtripSPIRV ()
 
void registerTestRoundtripDebugSPIRV ()
 

Variables

static constexpr unsigned kDeriveIndexBitwidthFromDataLayout = 0
 Value to pass as bitwidth for the index type when the converter is expected to derive the bitwidth from the LLVM data layout. More...
 
template<typename... Ts>
constexpr bool has_sub_attr_or_type_v
 
const char *const kDefaultSplitMarker = "// -----"
 

Detailed Description

Include the generated interface declarations.

Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.

The pass expands memref operations that modify the metadata of a memref (sizes, offset, strides) into a sequence of easier to analyze constructs.

This header declares functions that assist transformations in the MemRef dialect.

In particular, this pass transforms operations into explicit sequence of operations that model the effect of this operation on the different metadata. This pass uses affine constructs to materialize these effects.

See https://llvm.org/LICENSE.txt for license information. SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

Typedef Documentation

◆ AllocFunType

using mlir::AllocFunType = typedef llvm::function_ref<void *(size_t)>

Definition at line 37 of file MemRefUtils.h.

◆ AttributeStorageAllocator

Definition at line 207 of file AttributeSupport.h.

◆ AttrSubElementReplacements

Definition at line 273 of file AttrTypeSubElements.h.

◆ BlobGenerator

using mlir::BlobGenerator = typedef std::function<OwnedBlob(const std::string &, Location, StringRef)>

Definition at line 50 of file GPUCommonPass.h.

◆ ChunkBufferHandler

using mlir::ChunkBufferHandler = typedef function_ref<LogicalResult( std::unique_ptr<llvm::MemoryBuffer> chunkBuffer, raw_ostream &os)>

Definition at line 29 of file ToolUtilities.h.

◆ DataLayoutEntryKey

using mlir::DataLayoutEntryKey = typedef llvm::PointerUnion<Type, StringAttr>

Definition at line 26 of file DataLayoutInterfaces.h.

◆ DataLayoutEntryList

using mlir::DataLayoutEntryList = typedef llvm::SmallVector<DataLayoutEntryInterface, 4>

Definition at line 29 of file DataLayoutInterfaces.h.

◆ DataLayoutEntryListRef

using mlir::DataLayoutEntryListRef = typedef llvm::ArrayRef<DataLayoutEntryInterface>

Definition at line 30 of file DataLayoutInterfaces.h.

◆ DefaultAttributeStorage

Default storage type for attributes that require no additional initialization or storage.

Definition at line 199 of file AttributeSupport.h.

◆ DefaultTypeStorage

Default storage type for types that require no additional initialization or storage.

Definition at line 194 of file TypeSupport.h.

◆ DenseBoolArrayAttr

Definition at line 765 of file BuiltinAttributes.h.

◆ DenseBoolResourceElementsAttr

Definition at line 815 of file BuiltinAttributes.h.

◆ DenseF32ArrayAttr

Definition at line 770 of file BuiltinAttributes.h.

◆ DenseF32ResourceElementsAttr

Definition at line 833 of file BuiltinAttributes.h.

◆ DenseF64ArrayAttr

Definition at line 771 of file BuiltinAttributes.h.

◆ DenseF64ResourceElementsAttr

Definition at line 835 of file BuiltinAttributes.h.

◆ DenseI16ArrayAttr

Definition at line 767 of file BuiltinAttributes.h.

◆ DenseI16ResourceElementsAttr

Definition at line 819 of file BuiltinAttributes.h.

◆ DenseI32ArrayAttr

Definition at line 768 of file BuiltinAttributes.h.

◆ DenseI32ResourceElementsAttr

Definition at line 821 of file BuiltinAttributes.h.

◆ DenseI64ArrayAttr

Definition at line 769 of file BuiltinAttributes.h.

◆ DenseI64ResourceElementsAttr

Definition at line 823 of file BuiltinAttributes.h.

◆ DenseI8ArrayAttr

Definition at line 766 of file BuiltinAttributes.h.

◆ DenseI8ResourceElementsAttr

Definition at line 817 of file BuiltinAttributes.h.

◆ DenseMap

template<typename KeyT , typename ValueT , typename KeyInfoT = DenseMapInfo<KeyT>, typename BucketT = llvm::detail::DenseMapPair<KeyT, ValueT>>
using mlir::DenseMap = typedef llvm::DenseMap<KeyT, ValueT, KeyInfoT, BucketT>

Definition at line 122 of file LLVM.h.

◆ DenseMapInfo

template<typename T , typename Enable = void>
DenseMapInfo< mlir::RegisteredOperationName >

Definition at line 118 of file LLVM.h.

◆ DenseResourceElementsHandle

Definition at line 702 of file BuiltinAttributes.h.

◆ DenseSet

template<typename ValueT , typename ValueInfoT = DenseMapInfo<ValueT>>
using mlir::DenseSet = typedef llvm::DenseSet<ValueT, ValueInfoT>

Definition at line 124 of file LLVM.h.

◆ DenseUI16ResourceElementsAttr

Definition at line 827 of file BuiltinAttributes.h.

◆ DenseUI32ResourceElementsAttr

Definition at line 829 of file BuiltinAttributes.h.

◆ DenseUI64ResourceElementsAttr

Definition at line 831 of file BuiltinAttributes.h.

◆ DenseUI8ResourceElementsAttr

Definition at line 825 of file BuiltinAttributes.h.

◆ DialectAllocatorFunction

using mlir::DialectAllocatorFunction = typedef std::function<Dialect *(MLIRContext *)>

Definition at line 27 of file DialectRegistry.h.

◆ DialectAllocatorFunctionRef

Definition at line 28 of file DialectRegistry.h.

◆ DialectRegistrationFunction

using mlir::DialectRegistrationFunction = typedef std::function<void(DialectRegistry &)>

Interface of the function that adds all dialects and dialect extensions used for the translation to the given DialectRegistry.

Definition at line 57 of file Translation.h.

◆ DominanceInfoNode

using mlir::DominanceInfoNode = typedef llvm::DomTreeNodeBase<Block>

Definition at line 30 of file Dominance.h.

◆ DynamicDialectPopulationFunction

using mlir::DynamicDialectPopulationFunction = typedef std::function<void(MLIRContext *, DynamicDialect *)>

Definition at line 29 of file DialectRegistry.h.

◆ ElementWiseVisitor

template<typename T >
using mlir::ElementWiseVisitor = typedef llvm::function_ref<void(T &ptr, ArrayRef<int64_t>)>

Convenient callback to "visit" a memref element by element.

This takes a reference to an individual element as well as the coordinates. It can be used in conjuction with a StridedMemrefIterator.

Definition at line 130 of file MemRefUtils.h.

◆ ForwardSliceOptions

Definition at line 52 of file SliceAnalysis.h.

◆ function_ref

template<typename Fn >
using mlir::function_ref = typedef llvm::function_ref<Fn>

Definition at line 147 of file LLVM.h.

◆ GenFunction

using mlir::GenFunction = typedef std::function<bool(const llvm::RecordKeeper &recordKeeper, raw_ostream &os)>

Generator function to invoke.

Definition at line 24 of file GenInfo.h.

◆ Loops

using mlir::Loops = typedef SmallVector<scf::ForOp, 8>

Tile a nest of standard for loops rooted at rootForOp by finding such parametric tile sizes that the outer loops have a fixed number of iterations as defined in sizes.

Definition at line 126 of file Utils.h.

◆ LoweringCallback

using mlir::LoweringCallback = typedef std::function<std::unique_ptr<llvm::Module>( Operation *, llvm::LLVMContext &, StringRef)>

Definition at line 52 of file GPUCommonPass.h.

◆ MemorySpaceMapping

using mlir::MemorySpaceMapping = typedef std::function<unsigned(gpu::AddressSpace)>

A function that maps a MemorySpace enum to a target-specific integer value.

Definition at line 75 of file GPUCommonPass.h.

◆ MemrefValue

A value with a memref type.

Definition at line 26 of file MemRefUtils.h.

◆ NewYieldValuesFn

using mlir::NewYieldValuesFn = typedef std::function<SmallVector<Value>( OpBuilder &b, Location loc, ArrayRef<BlockArgument> newBbArgs)>

A function that returns the additional yielded values during replaceWithAdditionalYields.

newBbArgs are the newly added region iter_args. This function should return as many values as there are block arguments in newBbArgs.

Definition at line 25 of file LoopLikeInterface.h.

◆ OpAsmSetBlockNameFn

using mlir::OpAsmSetBlockNameFn = typedef function_ref<void(Block *, StringRef)>

A functor used to set the name of blocks in regions directly nested under an operation.

Definition at line 1702 of file OpImplementation.h.

◆ OpAsmSetValueNameFn

using mlir::OpAsmSetValueNameFn = typedef function_ref<void(Value, StringRef)>

A functor used to set the name of the start of a result group of an operation.

See 'getAsmResultNames' below for more details.

Definition at line 1698 of file OpImplementation.h.

◆ OperandElementTypeRange

Definition at line 97 of file TypeUtilities.h.

◆ OwnedBlob

using mlir::OwnedBlob = typedef std::unique_ptr<std::vector<char> >

Definition at line 49 of file GPUCommonPass.h.

◆ PassAllocatorFunction

using mlir::PassAllocatorFunction = typedef std::function<std::unique_ptr<Pass>()>

Definition at line 41 of file PassRegistry.h.

◆ PassPipelineFn

This defines the function type used to setup the pass manager.

This can be used to pass in a callback to setup a default pass pipeline to be applied on the loaded IR.

Definition at line 256 of file MlirOptMain.h.

◆ PassRegistryFunction

using mlir::PassRegistryFunction = typedef std::function<LogicalResult( OpPassManager &, StringRef options, function_ref<LogicalResult(const Twine &)> errorHandler)>

A registry function that adds passes to the given pass manager.

This should also parse options and return success() if parsing succeeded. errorHandler is a functor used to emit errors during parsing. parameter corresponds to the raw location within the pipeline string. This should always return failure.

Definition at line 38 of file PassRegistry.h.

◆ ReassociationExprs

Definition at line 28 of file ReshapeOpsUtils.h.

◆ ReassociationIndices

typedef SmallVector< int64_t, 2 > mlir::ReassociationIndices

Definition at line 27 of file Utils.h.

◆ ReassociationIndicesRef

using mlir::ReassociationIndicesRef = typedef ArrayRef<int64_t>

Definition at line 27 of file ReshapeOpsUtils.h.

◆ ReifiedRankedShapedTypeDims

Definition at line 29 of file InferTypeOpInterface.h.

◆ ReproducerStreamFactory

using mlir::ReproducerStreamFactory = typedef std::function<std::unique_ptr<ReproducerStream>(std::string &error)>

Method type for constructing ReproducerStream.

Definition at line 222 of file PassManager.h.

◆ ResultElementTypeRange

Definition at line 110 of file TypeUtilities.h.

◆ SetIntRangeFn

using mlir::SetIntRangeFn = typedef function_ref<void(Value, const ConstantIntRanges &)>

The type of the setResultRanges callback provided to ops implementing InferIntRangeInterface.

It should be called once for each integer result value and be passed the ConstantIntRanges corresponding to that value.

Definition at line 111 of file InferIntRangeInterface.h.

◆ SetVector

template<typename T , typename Vector = llvm::SmallVector<T, 0>, typename Set = DenseSet<T>, unsigned N = 0>
using mlir::SetVector = typedef llvm::SetVector<T, Vector, Set, N>

Definition at line 127 of file LLVM.h.

◆ StringSet

template<typename AllocatorTy = llvm::MallocAllocator>
using mlir::StringSet = typedef llvm::StringSet<AllocatorTy>

Definition at line 129 of file LLVM.h.

◆ StringSwitch

template<typename T , typename R = T>
using mlir::StringSwitch = typedef llvm::StringSwitch<T, R>

Definition at line 137 of file LLVM.h.

◆ TileLoops

using mlir::TileLoops = typedef std::pair<Loops, Loops>

Definition at line 127 of file Utils.h.

◆ TransitiveFilter

Definition at line 41 of file SliceAnalysis.h.

◆ TranslateFromMLIRFunction

using mlir::TranslateFromMLIRFunction = typedef std::function<LogicalResult(Operation *, llvm::raw_ostream &output)>

Interface of the function that translates MLIR to a different format and outputs the result to a stream.

It is allowed to modify the operation.

Definition at line 43 of file Translation.h.

◆ TranslateFunction

using mlir::TranslateFunction = typedef std::function<LogicalResult( const std::shared_ptr<llvm::SourceMgr> &sourceMgr, llvm::raw_ostream &output, MLIRContext *)>

Interface of the function that performs file-to-file translation involving MLIR.

The input file is held in the given MemoryBuffer; the output file should be written to the given raw_ostream. The implementation should create all MLIR constructs needed during the process inside the given context. This can be used for round-tripping external formats through the MLIR system.

Definition at line 51 of file Translation.h.

◆ TranslateRawSourceMgrToMLIRFunction

using mlir::TranslateRawSourceMgrToMLIRFunction = typedef std::function<OwningOpRef<Operation *>(llvm::SourceMgr &sourceMgr, MLIRContext *)>

Definition at line 30 of file Translation.h.

◆ TranslateSourceMgrToMLIRFunction

using mlir::TranslateSourceMgrToMLIRFunction = typedef std::function<OwningOpRef<Operation *>( const std::shared_ptr<llvm::SourceMgr> &sourceMgr, MLIRContext *)>

Interface of the function that translates the sources managed by sourceMgr to MLIR.

The source manager has at least one buffer. The implementation should create a new MLIR Operation in the given context and return a pointer to it, or a nullptr in case of any error.

Definition at line 28 of file Translation.h.

◆ TranslateStringRefToMLIRFunction

using mlir::TranslateStringRefToMLIRFunction = typedef std::function<OwningOpRef<Operation *>(llvm::StringRef, MLIRContext *)>

Interface of the function that translates the given string to MLIR.

The implementation should create a new MLIR Operation in the given context. If source-related error reporting is required from within the function, use TranslateSourceMgrToMLIRFunction instead.

Definition at line 38 of file Translation.h.

◆ TypedValue

template<typename Ty , typename Value = mlir::Value>
using mlir::TypedValue = typedef std::conditional_t<std::is_same_v<Ty, mlir::Type>, mlir::Value, detail::TypedValue<Ty> >

If Ty is mlir::Type this will select Value instead of having a wrapper around it.

This helps resolve ambiguous conversion issues.

Definition at line 497 of file Value.h.

◆ TypeRangeRangeIterator

using mlir::TypeRangeRangeIterator = typedef llvm::mapped_iterator<llvm::iota_range<unsigned>::iterator, std::function<TypeRange(unsigned)> >

Definition at line 85 of file TypeRange.h.

◆ TypeStorageAllocator

This is a utility allocator used to allocate memory for instances of derived Types.

Definition at line 202 of file TypeSupport.h.

◆ TypeSubElementReplacements

Definition at line 274 of file AttrTypeSubElements.h.

◆ TypeSwitch

template<typename T , typename ResultT = void>
using mlir::TypeSwitch = typedef llvm::TypeSwitch<T, ResultT>

Definition at line 140 of file LLVM.h.

◆ ValueDimList

using mlir::ValueDimList = typedef SmallVector<std::pair<Value, std::optional<int64_t> >>

Definition at line 51 of file ValueBoundsOpInterface.h.

Enumeration Type Documentation

◆ AffineExprKind

enum mlir::AffineExprKind
strong
Enumerator
Add 
Mul 

RHS of mul is always a constant or a symbolic expression.

Mod 

RHS of mod is always a constant or a symbolic expression with a positive value.

FloorDiv 

RHS of floordiv is always a constant or a symbolic expression.

CeilDiv 

RHS of ceildiv is always a constant or a symbolic expression.

LAST_AFFINE_BINARY_OP 

This is a marker for the last affine binary op.

The range of binary op's is expected to be this element and earlier.

Constant 

Constant integer.

DimId 

Dimensional identifier.

SymbolId 

Symbolic identifier.

Definition at line 41 of file AffineExpr.h.

◆ AsmResourceEntryKind

This enum represents the different kinds of resource values.

Enumerator
Blob 

A blob of data with an accompanying alignment.

Bool 

A boolean value.

String 

A string value.

Definition at line 272 of file AsmState.h.

◆ ChangeResult

enum mlir::ChangeResult
strong

A result type used to indicate if a change happened.

Boolean operations on ChangeResult behave as though Change is truth.

Enumerator
NoChange 
Change 

Definition at line 34 of file DataFlowFramework.h.

◆ DeletionKind

enum mlir::DeletionKind
strong

Returned by operation promotion logic requesting the deletion of an operation.

Enumerator
Keep 

Keep the operation after promotion.

Delete 

Delete the operation after promotion.

Definition at line 35 of file MemorySlotInterfaces.h.

◆ DiagnosticSeverity

Defines the different supported severity of a diagnostic.

Enumerator
Note 
Warning 
Error 
Remark 

Definition at line 41 of file Diagnostics.h.

◆ GreedyRewriteStrictness

This enum controls which ops are put on the worklist during a greedy pattern rewrite.

Enumerator
AnyOp 

No restrictions wrt. which ops are processed.

ExistingAndNewOps 

Only pre-existing and newly created ops are processed.

ExistingOps 

Only pre-existing ops are processed.

Definition at line 23 of file GreedyPatternRewriteDriver.h.

◆ HoistingKind

enum mlir::HoistingKind : uint8_t
strong
Enumerator
None 
Loop 
Block 

Definition at line 21 of file AllocationOpInterface.h.

◆ PassDisplayMode

enum mlir::PassDisplayMode
strong

An enum describing the different display modes for the information within the pass manager.

Enumerator
List 
Pipeline 

Definition at line 199 of file PassManager.h.

◆ RegionKind

enum mlir::RegionKind
strong

The kinds of regions contained in an operation.

SSACFG regions require the SSA-Dominance property to hold. Graph regions do not require SSA-Dominance. If a registered operation does not implement RegionKindInterface, then any regions it contains are assumed to be SSACFG regions.

Enumerator
SSACFG 
Graph 

Definition at line 26 of file RegionKindInterface.h.

◆ ReinterpretMapScope

Defines a scope for reinterpret map pass.

Enumerator
kAll 
kGenericOnly 
kExceptGeneric 

Definition at line 44 of file Passes.h.

◆ ReshapeOpKind

enum mlir::ReshapeOpKind
strong
Enumerator
kExpand 
kCollapse 

Definition at line 156 of file ReshapeOpsUtils.h.

◆ SliceVerificationResult

Enum that captures information related to verifier error conditions on slice insert/extract type of ops.

Enumerator
Success 
RankTooLarge 
SizeMismatch 
ElemTypeMismatch 
MemSpaceMismatch 
LayoutMismatch 

Definition at line 375 of file BuiltinTypes.h.

◆ SparseEmitStrategy

Defines a scope for reinterpret map pass.

Enumerator
kFunctional 
kDebugInterface 

Definition at line 51 of file Passes.h.

◆ SparseParallelizationStrategy

Defines a parallelization strategy.

Any independent loop is a candidate for parallelization. The loop is made parallel if (1) allowed by the strategy (e.g., AnyStorageOuterLoop considers either a dense or sparse outermost loop only), and (2) the generated code is an actual for-loop (and not a co-iterating while-loop).

Enumerator
kNone 
kDenseOuterLoop 
kAnyStorageOuterLoop 
kDenseAnyLoop 
kAnyStorageAnyLoop 

Definition at line 35 of file Passes.h.

◆ SPIRVSubByteTypeStorage

How sub-byte values are storaged in memory.

Enumerator
Packed 

Sub-byte values are tightly packed without any padding, e.g., 4xi2 -> i8.

Definition at line 30 of file SPIRVConversion.h.

◆ TraversalMode

Defines the traversal method options to be used in the reduction tree traversal.

Enumerator
SinglePath 
Backtrack 
MultiPath 

Definition at line 37 of file ReductionNode.h.

◆ WalkOrder

enum mlir::WalkOrder
strong

Traversal order for region, block and operation walk utilities.

Enumerator
PreOrder 
PostOrder 

Definition at line 63 of file Visitors.h.

Function Documentation

◆ alignAffineMapWithValues()

AffineMap mlir::alignAffineMapWithValues ( AffineMap  map,
ValueRange  operands,
ValueRange  dims,
ValueRange  syms,
SmallVector< Value > *  newSyms = nullptr 
)

Re-indexes the dimensions and symbols of an affine map with given operands values to align with dims and syms values.

Each dimension/symbol of the map, bound to an operand o, is replaced with dimension i, where i is the position of o within dims. If o is not in dims, replace it with symbol i, where i is the position of o within syms. If o is not in syms either, replace it with a new symbol.

Note: If a value appears multiple times as a dimension/symbol (or both), all corresponding dim/sym expressions are replaced with the first dimension bound to that value (or first symbol if no such dimension exists).

The resulting affine map has dims.size() many dimensions and at least syms.size() many symbols.

The SSA values of the symbols of the resulting map are optionally returned via newSyms. This is a concatenation of syms with the SSA values of the newly added symbols.

Note: As part of this re-indexing, dimensions may turn into symbols, or vice versa.

Definition at line 1186 of file FlatLinearValueConstraints.cpp.

References mlir::detail::enumerate(), mlir::Builder::getAffineDimExpr(), mlir::Builder::getAffineSymbolExpr(), mlir::AffineMap::getContext(), mlir::AffineMap::getNumDims(), mlir::AffineMap::getNumInputs(), mlir::AffineMap::getNumSymbols(), and mlir::AffineMap::replaceDimsAndSymbols().

Referenced by alignAndAddBound(), and mlir::FlatLinearValueConstraints::computeAlignedMap().

◆ allOperandsHaveSameCoopMatrixType()

bool mlir::allOperandsHaveSameCoopMatrixType ( ValueRange  operands)

Definition at line 85 of file WmmaOpsToSPIRV.cpp.

References mlir::Value::getType(), and mlir::ValueRange::getType().

◆ applyAnalysisConversion() [1/2]

LogicalResult mlir::applyAnalysisConversion ( ArrayRef< Operation * >  ops,
ConversionTarget target,
const FrozenRewritePatternSet patterns,
ConversionConfig  config = ConversionConfig() 
)

Apply an analysis conversion on the given operations, and all nested operations.

This method analyzes which operations would be successfully converted to the target if a conversion was applied. All operations that were found to be legalizable to the given 'target' are placed within the provided 'config.legalizableOps' set; note that no actual rewrites are applied to the operations on success. This method only returns failure if there are unreachable blocks in any of the regions nested within 'ops'.

Definition at line 3644 of file DialectConversion.cpp.

References mlir::OperationConverter::convertOperations().

◆ applyAnalysisConversion() [2/2]

LogicalResult mlir::applyAnalysisConversion ( Operation op,
ConversionTarget target,
const FrozenRewritePatternSet patterns,
ConversionConfig  config = ConversionConfig() 
)

Definition at line 3652 of file DialectConversion.cpp.

◆ applyDefaultTimingManagerCLOptions()

void mlir::applyDefaultTimingManagerCLOptions ( DefaultTimingManager tm)

Apply any values that were registered with 'registerDefaultTimingManagerOptions' to a DefaultTimingManager.

Definition at line 619 of file Timing.cpp.

References options, mlir::DefaultTimingManager::setDisplayMode(), mlir::DefaultTimingManager::setEnabled(), and mlir::DefaultTimingManager::setOutput().

Referenced by applyDefaultTimingPassManagerCLOptions(), and performActions().

◆ applyDefaultTimingPassManagerCLOptions()

void mlir::applyDefaultTimingPassManagerCLOptions ( PassManager pm)

Apply any values provided to the timing manager options that were registered with registerDefaultTimingManagerOptions.

This is a handy helper function if you do not want to bother creating your own timing manager and passing it to the pass manager.

Definition at line 169 of file PassManagerOptions.cpp.

References applyDefaultTimingManagerCLOptions(), and mlir::PassManager::enableTiming().

◆ applyFullConversion() [1/2]

LogicalResult mlir::applyFullConversion ( ArrayRef< Operation * >  ops,
const ConversionTarget target,
const FrozenRewritePatternSet patterns,
ConversionConfig  config = ConversionConfig() 
)

Apply a complete conversion on the given operations, and all nested operations.

This method returns failure if the conversion of any operation fails, or if there are unreachable blocks in any of the regions nested within 'ops'.

Definition at line 3626 of file DialectConversion.cpp.

References mlir::OperationConverter::convertOperations().

◆ applyFullConversion() [2/2]

LogicalResult mlir::applyFullConversion ( Operation op,
const ConversionTarget target,
const FrozenRewritePatternSet patterns,
ConversionConfig  config = ConversionConfig() 
)

Definition at line 3634 of file DialectConversion.cpp.

◆ applyOpPatternsAndFold()

LogicalResult mlir::applyOpPatternsAndFold ( ArrayRef< Operation * >  ops,
const FrozenRewritePatternSet patterns,
GreedyRewriteConfig  config = GreedyRewriteConfig(),
bool *  changed = nullptr,
bool *  allErased = nullptr 
)

Rewrite the specified ops by repeatedly applying the highest benefit patterns in a greedy worklist driven manner until a fixpoint is reached.

The greedy rewrite may prematurely stop after a maximum number of iterations, which can be configured in the configuration parameter.

Also performs folding and simple dead-code elimination before attempting to match any of the provided patterns.

Newly created ops and other pre-existing ops that use results of rewritten ops or supply operands to such ops are also processed, unless such ops are excluded via config.strictMode. Any other ops remain unmodified (i.e., regardless of strictMode).

In addition to strictness, a region scope can be specified. Only ops within the scope are simplified. This is similar to applyPatternsAndFoldGreedily, where only ops within the given region/op are simplified by default. If no scope is specified, it is assumed to be the first common enclosing region of the given ops.

Note that ops in ops could be erased as result of folding, becoming dead, or via pattern rewrites. If more far reaching simplification is desired, applyPatternsAndFoldGreedily should be used.

Returns "success" if the iterative process converged (i.e., fixpoint was reached) and no more patterns can be matched. changed is set to "true" if the IR was modified at all. allOpsErased is set to "true" if all ops in ops were erased.

Definition at line 1006 of file GreedyPatternRewriteDriver.cpp.

References findCommonAncestor(), mlir::GreedyRewriteConfig::scope, and success().

Referenced by mlir::affine::hoistAffineIfOp().

◆ applyPartialConversion() [1/2]

LogicalResult mlir::applyPartialConversion ( ArrayRef< Operation * >  ops,
const ConversionTarget target,
const FrozenRewritePatternSet patterns,
ConversionConfig  config = ConversionConfig() 
)

Below we define several entry points for operation conversion.

It is important to note that the patterns provided to the conversion framework may have additional constraints. See the PatternRewriter Hooks section of the ConversionPatternRewriter, to see what additional constraints are imposed on the use of the PatternRewriter. Apply a partial conversion on the given operations and all nested operations. This method converts as many operations to the target as possible, ignoring operations that failed to legalize. This method only returns failure if there ops explicitly marked as illegal.

Definition at line 3609 of file DialectConversion.cpp.

References mlir::OperationConverter::convertOperations().

◆ applyPartialConversion() [2/2]

<
LogicalResult mlir::applyPartialConversion ( Operation op,
const ConversionTarget target,
const FrozenRewritePatternSet patterns,
ConversionConfig  config = ConversionConfig()