14 #ifndef MLIR_TRANSFORMS_FOLDUTILS_H 15 #define MLIR_TRANSFORMS_FOLDUTILS_H 75 template <
typename OpTy,
typename... Args>
77 Location location, Args &&... args) {
78 Operation *op = builder.
create<OpTy>(location, std::forward<Args>(args)...);
79 if (
failed(tryToFold(op, results)))
86 template <
typename OpTy,
typename... Args>
87 typename std::enable_if<OpTy::template hasTrait<OpTrait::OneResult>(),
91 create<OpTy>(builder, results, location, std::forward<Args>(args)...);
92 return results.front();
96 template <
typename OpTy,
typename... Args>
97 typename std::enable_if<OpTy::template hasTrait<OpTrait::ZeroResult>(),
100 auto op = builder.
create<OpTy>(location, std::forward<Args>(args)...);
102 (void)tryToFold(op.getOperation(), unused);
121 function_ref<
void(Operation *)> processGeneratedConstants =
nullptr);
125 Operation *tryGetOrCreateConstant(
ConstantMap &uniquedConstants,
143 #endif // MLIR_TRANSFORMS_FOLDUTILS_H Definition: InferTypeOpInterface.cpp:20
OperationFolder(MLIRContext *ctx)
Definition: FoldUtils.h:52
virtual bool shouldMaterializeInto(Region *region) const
Definition: FoldUtils.h:41
Definition: Operation.h:27
void create(OpBuilder &builder, SmallVectorImpl< Value > &results, Location location, Args &&... args)
Definition: FoldUtils.h:76
Definition: DialectInterface.h:27
OpFolderDialectInterface(Dialect *dialect)
Definition: FoldUtils.h:34
bool failed(LogicalResult result)
Definition: LogicalResult.h:45
Definition: DialectInterface.h:150
std::enable_if< OpTy::template hasTrait< OpTrait::ZeroResult >), OpTy >::type create(OpBuilder &builder, Location location, Args &&... args)
Overload to create or fold a zero result operation.
Definition: FoldUtils.h:99
void erase()
Remove this operation from its parent block and delete it.
Definition: Operation.cpp:501
Definition: Location.h:52
unsigned getNumResults()
Return the number of results held by this operation.
Definition: Operation.cpp:548
Definition: LogicalResult.h:18
OpTy create(Location location, Args &&... args)
Create an operation of specific op type at the current insertion point.
Definition: Builders.h:294
Definition: Attributes.h:53
Definition: FoldUtils.h:31
Definition: FoldUtils.h:50
result_iterator result_end()
Definition: Operation.h:253
std::enable_if< OpTy::template hasTrait< OpTrait::OneResult >), Value >::type create(OpBuilder &builder, Location location, Args &&... args)
Overload to create or fold a single result operation.
Definition: FoldUtils.h:89
Definition: MLIRContext.h:34
Definition: Builders.h:158
result_iterator result_begin()
Definition: Operation.h:252