My Project
|
#include <Builders.h>
Public Member Functions | |
BlockBuilder (BlockHandle bh, Append) | |
BlockBuilder (BlockHandle *bh, ArrayRef< ValueHandle *> args) | |
void | operator() (function_ref< void(void)> fun=nullptr) |
Additional Inherited Members | |
![]() | |
NestedBuilder ()=default | |
NestedBuilder (const NestedBuilder &)=delete | |
NestedBuilder (NestedBuilder &&other) | |
NestedBuilder & | operator= (const NestedBuilder &)=delete |
NestedBuilder & | operator= (NestedBuilder &&other) |
void | enter (mlir::Block *block, int prev=0) |
void | exit () |
~NestedBuilder () | |
A BlockBuilder is a NestedBuilder for mlir::Block*. This exists by opposition to LoopBuilder which is not related to an mlir::Block* but to a mlir::Value. It is meant to be used as a temporary object for representing any nested MLIR construct that is "related to" an mlir::Block*.
mlir::edsc::BlockBuilder::BlockBuilder | ( | BlockHandle | bh, |
Append | |||
) |
Enters the mlir::Block* previously captured by bh
and sets the insertion point to its end.
mlir::edsc::BlockBuilder::BlockBuilder | ( | BlockHandle * | bh, |
ArrayRef< ValueHandle *> | args | ||
) |
Constructs a new mlir::Block with argument types derived from args
. Captures the new block in bh
and its arguments into args
. Enters the new mlir::Block* and sets the insertion point to its end.
Prerequisites: The ValueHandle args
are typed delayed ValueHandles; i.e. they are not yet bound to mlir::Value.
void mlir::edsc::BlockBuilder::operator() | ( | function_ref< void(void)> | fun = nullptr | ) |
The only purpose of this operator is to serve as a sequence point so that the evaluation of fun
(which build IR snippets in a scoped fashion) is scoped within a BlockBuilder.
Only serves as an ordering point between entering nested block and creating stmts.