MLIR
20.0.0git
|
ImplicitLocOpBuilder maintains a 'current location', allowing use of the create<> method without specifying the location. More...
#include "mlir/IR/ImplicitLocOpBuilder.h"
Public Member Functions | |
template<typename... T> | |
ImplicitLocOpBuilder (Location loc, T &&...operands) | |
OpBuilder has a bunch of convenience constructors - we support them all with the additional Location. More... | |
Location | getLoc () const |
Accessors for the implied location. More... | |
void | setLoc (Location loc) |
template<typename OpTy , typename... Args> | |
OpTy | create (Args &&...args) |
Create an operation of specific op type at the current insertion point and location. More... | |
template<typename OpTy , typename... Args> | |
void | createOrFold (llvm::SmallVectorImpl< Value > &results, Args &&...args) |
Create an operation of specific op type at the current insertion point, and immediately try to fold it. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< mlir::OpTrait::OneResult >), Value > | createOrFold (Args &&...args) |
Overload to create or fold a single result operation. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< mlir::OpTrait::ZeroResults >), OpTy > | createOrFold (Args &&...args) |
Overload to create or fold a zero result operation. More... | |
mlir::InFlightDiagnostic | emitError (const llvm::Twine &message=llvm::Twine()) |
This builder can also be used to emit diagnostics to the current location. More... | |
mlir::InFlightDiagnostic | emitWarning (const llvm::Twine &message=llvm::Twine()) |
mlir::InFlightDiagnostic | emitRemark (const llvm::Twine &message=llvm::Twine()) |
Operation * | create (const OperationState &state) |
Creates an operation given the fields represented as an OperationState. More... | |
Operation * | create (Location loc, StringAttr opName, ValueRange operands, TypeRange types={}, ArrayRef< NamedAttribute > attributes={}, BlockRange successors={}, MutableArrayRef< std::unique_ptr< Region >> regions={}) |
Creates an operation with the given fields. More... | |
template<typename OpTy , typename... Args> | |
OpTy | create (Location location, Args &&...args) |
Create an operation of specific op type at the current insertion point. More... | |
template<typename OpTy , typename... Args> | |
void | createOrFold (SmallVectorImpl< Value > &results, Location location, Args &&...args) |
Create an operation of specific op type at the current insertion point, and immediately try to fold it. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< OpTrait::OneResult >), Value > | createOrFold (Location location, Args &&...args) |
Overload to create or fold a single result operation. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< OpTrait::ZeroResults >), OpTy > | createOrFold (Location location, Args &&...args) |
Overload to create or fold a zero result operation. More... | |
Public Member Functions inherited from mlir::OpBuilder | |
OpBuilder (MLIRContext *ctx, Listener *listener=nullptr) | |
Create a builder with the given context. More... | |
OpBuilder (Region *region, Listener *listener=nullptr) | |
Create a builder and set the insertion point to the start of the region. More... | |
OpBuilder (Region ®ion, Listener *listener=nullptr) | |
OpBuilder (Operation *op, Listener *listener=nullptr) | |
Create a builder and set insertion point to the given operation, which will cause subsequent insertions to go right before it. More... | |
OpBuilder (Block *block, Block::iterator insertPoint, Listener *listener=nullptr) | |
void | setListener (Listener *newListener) |
Sets the listener of this builder to the one provided. More... | |
Listener * | getListener () const |
Returns the current listener of this builder, or nullptr if this builder doesn't have a listener. More... | |
void | clearInsertionPoint () |
Reset the insertion point to no location. More... | |
InsertPoint | saveInsertionPoint () const |
Return a saved insertion point. More... | |
void | restoreInsertionPoint (InsertPoint ip) |
Restore the insert point to a previously saved point. More... | |
void | setInsertionPoint (Block *block, Block::iterator insertPoint) |
Set the insertion point to the specified location. More... | |
void | setInsertionPoint (Operation *op) |
Sets the insertion point to the specified operation, which will cause subsequent insertions to go right before it. More... | |
void | setInsertionPointAfter (Operation *op) |
Sets the insertion point to the node after the specified operation, which will cause subsequent insertions to go right after it. More... | |
void | setInsertionPointAfterValue (Value val) |
Sets the insertion point to the node after the specified value. More... | |
void | setInsertionPointToStart (Block *block) |
Sets the insertion point to the start of the specified block. More... | |
void | setInsertionPointToEnd (Block *block) |
Sets the insertion point to the end of the specified block. More... | |
Block * | getInsertionBlock () const |
Return the block the current insertion point belongs to. More... | |
Block::iterator | getInsertionPoint () const |
Returns the current insertion point of the builder. More... | |
Block * | getBlock () const |
Returns the current block of the builder. More... | |
Block * | createBlock (Region *parent, Region::iterator insertPt={}, TypeRange argTypes=std::nullopt, ArrayRef< Location > locs=std::nullopt) |
Add new block with 'argTypes' arguments and set the insertion point to the end of it. More... | |
Block * | createBlock (Block *insertBefore, TypeRange argTypes=std::nullopt, ArrayRef< Location > locs=std::nullopt) |
Add new block with 'argTypes' arguments and set the insertion point to the end of it. More... | |
Operation * | insert (Operation *op) |
Insert the given operation at the current insertion point and return it. More... | |
Operation * | create (const OperationState &state) |
Creates an operation given the fields represented as an OperationState. More... | |
Operation * | create (Location loc, StringAttr opName, ValueRange operands, TypeRange types={}, ArrayRef< NamedAttribute > attributes={}, BlockRange successors={}, MutableArrayRef< std::unique_ptr< Region >> regions={}) |
Creates an operation with the given fields. More... | |
template<typename OpTy , typename... Args> | |
OpTy | create (Location location, Args &&...args) |
Create an operation of specific op type at the current insertion point. More... | |
template<typename OpTy , typename... Args> | |
void | createOrFold (SmallVectorImpl< Value > &results, Location location, Args &&...args) |
Create an operation of specific op type at the current insertion point, and immediately try to fold it. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< OpTrait::OneResult >), Value > | createOrFold (Location location, Args &&...args) |
Overload to create or fold a single result operation. More... | |
template<typename OpTy , typename... Args> | |
std::enable_if_t< OpTy::template hasTrait< OpTrait::ZeroResults >), OpTy > | createOrFold (Location location, Args &&...args) |
Overload to create or fold a zero result operation. More... | |
LogicalResult | tryFold (Operation *op, SmallVectorImpl< Value > &results) |
Attempts to fold the given operation and places new results within results . More... | |
Operation * | clone (Operation &op, IRMapping &mapper) |
Creates a deep copy of the specified operation, remapping any operands that use values outside of the operation using the map that is provided ( leaving them alone if no entry is present). More... | |
Operation * | clone (Operation &op) |
Operation * | cloneWithoutRegions (Operation &op, IRMapping &mapper) |
Creates a deep copy of this operation but keep the operation regions empty. More... | |
Operation * | cloneWithoutRegions (Operation &op) |
template<typename OpT > | |
OpT | cloneWithoutRegions (OpT op) |
void | cloneRegionBefore (Region ®ion, Region &parent, Region::iterator before, IRMapping &mapping) |
Clone the blocks that belong to "region" before the given position in another region "parent". More... | |
void | cloneRegionBefore (Region ®ion, Region &parent, Region::iterator before) |
void | cloneRegionBefore (Region ®ion, Block *before) |
Public Member Functions inherited from mlir::Builder | |
Builder (MLIRContext *context) | |
Builder (Operation *op) | |
MLIRContext * | getContext () const |
Location | getUnknownLoc () |
Location | getFusedLoc (ArrayRef< Location > locs, Attribute metadata=Attribute()) |
FloatType | getFloat4E2M1FNType () |
FloatType | getFloat6E2M3FNType () |
FloatType | getFloat6E3M2FNType () |
FloatType | getFloat8E5M2Type () |
FloatType | getFloat8E4M3Type () |
FloatType | getFloat8E4M3FNType () |
FloatType | getFloat8E5M2FNUZType () |
FloatType | getFloat8E4M3FNUZType () |
FloatType | getFloat8E4M3B11FNUZType () |
FloatType | getFloat8E3M4Type () |
FloatType | getFloat8E8M0FNUType () |
FloatType | getBF16Type () |
FloatType | getF16Type () |
FloatType | getTF32Type () |
FloatType | getF32Type () |
FloatType | getF64Type () |
FloatType | getF80Type () |
FloatType | getF128Type () |
IndexType | getIndexType () |
IntegerType | getI1Type () |
IntegerType | getI2Type () |
IntegerType | getI4Type () |
IntegerType | getI8Type () |
IntegerType | getI16Type () |
IntegerType | getI32Type () |
IntegerType | getI64Type () |
IntegerType | getIntegerType (unsigned width) |
IntegerType | getIntegerType (unsigned width, bool isSigned) |
FunctionType | getFunctionType (TypeRange inputs, TypeRange results) |
TupleType | getTupleType (TypeRange elementTypes) |
NoneType | getNoneType () |
template<typename Ty , typename... Args> | |
Ty | getType (Args &&...args) |
Get or construct an instance of the type Ty with provided arguments. More... | |
template<typename Attr , typename... Args> | |
Attr | getAttr (Args &&...args) |
Get or construct an instance of the attribute Attr with provided arguments. More... | |
NamedAttribute | getNamedAttr (StringRef name, Attribute val) |
UnitAttr | getUnitAttr () |
BoolAttr | getBoolAttr (bool value) |
DictionaryAttr | getDictionaryAttr (ArrayRef< NamedAttribute > value) |
IntegerAttr | getIntegerAttr (Type type, int64_t value) |
IntegerAttr | getIntegerAttr (Type type, const APInt &value) |
FloatAttr | getFloatAttr (Type type, double value) |
FloatAttr | getFloatAttr (Type type, const APFloat &value) |
StringAttr | getStringAttr (const Twine &bytes) |
ArrayAttr | getArrayAttr (ArrayRef< Attribute > value) |
TypedAttr | getZeroAttr (Type type) |
TypedAttr | getOneAttr (Type type) |
FloatAttr | getF16FloatAttr (float value) |
FloatAttr | getF32FloatAttr (float value) |
FloatAttr | getF64FloatAttr (double value) |
IntegerAttr | getI8IntegerAttr (int8_t value) |
IntegerAttr | getI16IntegerAttr (int16_t value) |
IntegerAttr | getI32IntegerAttr (int32_t value) |
IntegerAttr | getI64IntegerAttr (int64_t value) |
IntegerAttr | getIndexAttr (int64_t value) |
IntegerAttr | getSI32IntegerAttr (int32_t value) |
Signed and unsigned integer attribute getters. More... | |
IntegerAttr | getUI32IntegerAttr (uint32_t value) |
DenseIntElementsAttr | getBoolVectorAttr (ArrayRef< bool > values) |
Vector-typed DenseIntElementsAttr getters. values must not be empty. More... | |
DenseIntElementsAttr | getI32VectorAttr (ArrayRef< int32_t > values) |
DenseIntElementsAttr | getI64VectorAttr (ArrayRef< int64_t > values) |
DenseIntElementsAttr | getIndexVectorAttr (ArrayRef< int64_t > values) |
DenseFPElementsAttr | getF32VectorAttr (ArrayRef< float > values) |
DenseFPElementsAttr | getF64VectorAttr (ArrayRef< double > values) |
DenseIntElementsAttr | getI32TensorAttr (ArrayRef< int32_t > values) |
Tensor-typed DenseIntElementsAttr getters. More... | |
DenseIntElementsAttr | getI64TensorAttr (ArrayRef< int64_t > values) |
DenseIntElementsAttr | getIndexTensorAttr (ArrayRef< int64_t > values) |
DenseBoolArrayAttr | getDenseBoolArrayAttr (ArrayRef< bool > values) |
Tensor-typed DenseArrayAttr getters. More... | |
DenseI8ArrayAttr | getDenseI8ArrayAttr (ArrayRef< int8_t > values) |
DenseI16ArrayAttr | getDenseI16ArrayAttr (ArrayRef< int16_t > values) |
DenseI32ArrayAttr | getDenseI32ArrayAttr (ArrayRef< int32_t > values) |
DenseI64ArrayAttr | getDenseI64ArrayAttr (ArrayRef< int64_t > values) |
DenseF32ArrayAttr | getDenseF32ArrayAttr (ArrayRef< float > values) |
DenseF64ArrayAttr | getDenseF64ArrayAttr (ArrayRef< double > values) |
ArrayAttr | getAffineMapArrayAttr (ArrayRef< AffineMap > values) |
ArrayAttr | getBoolArrayAttr (ArrayRef< bool > values) |
ArrayAttr | getI32ArrayAttr (ArrayRef< int32_t > values) |
ArrayAttr | getI64ArrayAttr (ArrayRef< int64_t > values) |
ArrayAttr | getIndexArrayAttr (ArrayRef< int64_t > values) |
ArrayAttr | getF32ArrayAttr (ArrayRef< float > values) |
ArrayAttr | getF64ArrayAttr (ArrayRef< double > values) |
ArrayAttr | getStrArrayAttr (ArrayRef< StringRef > values) |
ArrayAttr | getTypeArrayAttr (TypeRange values) |
AffineExpr | getAffineDimExpr (unsigned position) |
AffineExpr | getAffineSymbolExpr (unsigned position) |
AffineExpr | getAffineConstantExpr (int64_t constant) |
AffineMap | getEmptyAffineMap () |
Returns a zero result affine map with no dimensions or symbols: () -> (). More... | |
AffineMap | getConstantAffineMap (int64_t val) |
Returns a single constant result affine map with 0 dimensions and 0 symbols. More... | |
AffineMap | getDimIdentityMap () |
AffineMap | getMultiDimIdentityMap (unsigned rank) |
AffineMap | getSymbolIdentityMap () |
AffineMap | getSingleDimShiftAffineMap (int64_t shift) |
Returns a map that shifts its (single) input dimension by 'shift'. More... | |
AffineMap | getShiftedAffineMap (AffineMap map, int64_t shift) |
Returns an affine map that is a translation (shift) of all result expressions in 'map' by 'shift'. More... | |
Static Public Member Functions | |
static ImplicitLocOpBuilder | atBlockBegin (Location loc, Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to before the first operation in the block but still inside the block. More... | |
static ImplicitLocOpBuilder | atBlockEnd (Location loc, Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to after the last operation in the block but still inside the block. More... | |
static ImplicitLocOpBuilder | atBlockTerminator (Location loc, Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to before the block terminator. More... | |
Static Public Member Functions inherited from mlir::OpBuilder | |
static OpBuilder | atBlockBegin (Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to before the first operation in the block but still inside the block. More... | |
static OpBuilder | atBlockEnd (Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to after the last operation in the block but still inside the block. More... | |
static OpBuilder | atBlockTerminator (Block *block, Listener *listener=nullptr) |
Create a builder and set the insertion point to before the block terminator. More... | |
Additional Inherited Members | |
Protected Attributes inherited from mlir::OpBuilder | |
Listener * | listener |
The optional listener for events of this builder. More... | |
Protected Attributes inherited from mlir::Builder | |
MLIRContext * | context |
ImplicitLocOpBuilder maintains a 'current location', allowing use of the create<> method without specifying the location.
It is otherwise the same as OpBuilder.
Definition at line 23 of file ImplicitLocOpBuilder.h.
|
inline |
OpBuilder has a bunch of convenience constructors - we support them all with the additional Location.
Definition at line 28 of file ImplicitLocOpBuilder.h.
Referenced by atBlockBegin(), atBlockEnd(), and atBlockTerminator().
|
inlinestatic |
Create a builder and set the insertion point to before the first operation in the block but still inside the block.
Definition at line 33 of file ImplicitLocOpBuilder.h.
References mlir::Block::begin(), ImplicitLocOpBuilder(), and mlir::OpBuilder::listener.
Referenced by insertCopies(), outlineExecuteOp(), setupCoroMachinery(), and setupSetErrorBlock().
|
inlinestatic |
Create a builder and set the insertion point to after the last operation in the block but still inside the block.
Definition at line 40 of file ImplicitLocOpBuilder.h.
References mlir::Block::end(), ImplicitLocOpBuilder(), and mlir::OpBuilder::listener.
Referenced by addAsyncRuntimeApiDeclarations(), addResumeFunction(), createCtlzFunc(), createElementFPowIFunc(), and createElementIPowIFunc().
|
inlinestatic |
Create a builder and set the insertion point to before the block terminator.
Definition at line 47 of file ImplicitLocOpBuilder.h.
References mlir::Block::getTerminator(), ImplicitLocOpBuilder(), and mlir::OpBuilder::listener.
|
inline |
Create an operation of specific op type at the current insertion point and location.
Definition at line 66 of file ImplicitLocOpBuilder.h.
Referenced by allocBuffer(), broadcast(), mlir::linalg::computeMultiTileSizes(), convertAcoshOp(), convertAsinhOp(), convertAtanhOp(), convertCeilOp(), convertCoshOp(), convertExp2fOp(), convertFloorOp(), convertFmaFOp(), convertFPowIOp(), convertPowfOp(), convertRoundEvenOp(), convertRoundOp(), convertScalarToComplexDtype(), convertScalarToFpDtype(), convertScalarToIntDtype(), convertSinhOp(), convertTanOp(), create4x128BitSuffle(), mlir::linalg::createAllReduceForResultWithoutPartialSharding(), createAsyncDispatchFunction(), mlir::mesh::createCollectiveProcessGroupSize(), createCtlzFunc(), mlir::linalg::createDestinationPassingStyleInitOperand(), createElementFPowIFunc(), createElementIPowIFunc(), createParallelComputeFunction(), mlir::mesh::createProcessLinearIndex(), createTruncatedFPValue(), createUnpackHiPd(), createUnpackHiPs(), createUnpackLoPd(), createUnpackLoPs(), defaultAllocBufferCallBack(), delinearize(), doAsyncDispatch(), doSequentialDispatch(), emitIsPositiveIndexAssertion(), mlir::tosa::EqualizeRanks(), exp2I32(), f32Cst(), f32FromBits(), floatCst(), frexp(), getConvOrPoolOutputDim(), handleMultidimensionalVectors(), i32Cst(), insertCopyLoops(), mlir::math::ErfPolynomialApproximation::matchAndRewrite(), max(), min(), mlir::x86vector::avx2::intrin::mm256BlendPs(), mlir::x86vector::avx2::inline_asm::mm256BlendPsAsm(), mlir::x86vector::avx2::intrin::mm256Permute2f128Ps(), mlir::x86vector::avx2::intrin::mm256ShufflePs(), mlir::x86vector::avx2::intrin::mm256UnpackHiPs(), mlir::x86vector::avx2::intrin::mm256UnpackLoPs(), mlir::mesh::moveLastSplitAxisInResharding(), outlineExecuteOp(), promoteSubViews(), reifyConstantDim(), mlir::mesh::splitLastAxisInResharding(), truncToI32(), mlir::mesh::tryUpdateHaloInResharding(), unpackOperandVector(), and mlir::mesh::unsplitLastAxisInResharding().
Operation * OpBuilder::create |
Creates an operation given the fields represented as an OperationState.
Create an operation given the fields represented as an OperationState.
Definition at line 485 of file Builders.cpp.
Operation * OpBuilder::create |
Creates an operation with the given fields.
Definition at line 488 of file Builders.cpp.
|
inline |
Create an operation of specific op type at the current insertion point.
Definition at line 514 of file Builders.h.
|
inline |
Overload to create or fold a single result operation.
Definition at line 81 of file ImplicitLocOpBuilder.h.
|
inline |
Overload to create or fold a zero result operation.
Definition at line 88 of file ImplicitLocOpBuilder.h.
|
inline |
Create an operation of specific op type at the current insertion point, and immediately try to fold it.
This functions populates 'results' with the results after folding the operation.
Definition at line 74 of file ImplicitLocOpBuilder.h.
Referenced by allocBuffer(), defaultAllocBufferCallBack(), and insertCopyLoops().
|
inline |
Overload to create or fold a single result operation.
Definition at line 556 of file Builders.h.
|
inline |
Overload to create or fold a zero result operation.
Definition at line 565 of file Builders.h.
|
inline |
Create an operation of specific op type at the current insertion point, and immediately try to fold it.
This functions populates 'results' with the results of the operation.
Definition at line 528 of file Builders.h.
|
inline |
This builder can also be used to emit diagnostics to the current location.
Definition at line 94 of file ImplicitLocOpBuilder.h.
References mlir::emitError().
|
inline |
Definition at line 102 of file ImplicitLocOpBuilder.h.
References mlir::emitRemark().
|
inline |
Definition at line 98 of file ImplicitLocOpBuilder.h.
References mlir::emitWarning().
|
inline |
Accessors for the implied location.
Definition at line 56 of file ImplicitLocOpBuilder.h.
Referenced by mlir::linalg::computeContinuousTileSizes(), mlir::linalg::computeMultiTileSizes(), mlir::mesh::createCollectiveProcessGroupSize(), mlir::linalg::createDestinationPassingStyleInitOperand(), createElementFPowIFunc(), createElementIPowIFunc(), insertCopyLoops(), mlir::affine::linearizeIndex(), and promoteSubViews().
|
inline |
Definition at line 57 of file ImplicitLocOpBuilder.h.