My Project
|
Namespaces | |
detail | |
Classes | |
struct | OperationBuilder |
struct | ValueBuilder |
Functions | |
OperationHandle | br (BlockHandle bh, ArrayRef< ValueHandle > operands) |
OperationHandle | br (BlockHandle *bh, ArrayRef< ValueHandle *> captures, ArrayRef< ValueHandle > operands) |
OperationHandle | cond_br (ValueHandle cond, BlockHandle trueBranch, ArrayRef< ValueHandle > trueOperands, BlockHandle falseBranch, ArrayRef< ValueHandle > falseOperands) |
OperationHandle | cond_br (ValueHandle cond, BlockHandle *trueBranch, ArrayRef< ValueHandle *> trueCaptures, ArrayRef< ValueHandle > trueOperands, BlockHandle *falseBranch, ArrayRef< ValueHandle *> falseCaptures, ArrayRef< ValueHandle > falseOperands) |
Provides a set of first class intrinsics. In the future, most of intrinsics related to Operation that don't contain other operations should be Tablegen'd.
using mlir::edsc::intrinsics::addf = typedef ValueBuilder<AddFOp> |
using mlir::edsc::intrinsics::affine_apply = typedef ValueBuilder<AffineApplyOp> |
using mlir::edsc::intrinsics::affine_if = typedef OperationBuilder<AffineIfOp> |
using mlir::edsc::intrinsics::affine_load = typedef ValueBuilder<AffineLoadOp> |
using mlir::edsc::intrinsics::affine_store = typedef OperationBuilder<AffineStoreOp> |
using mlir::edsc::intrinsics::alloc = typedef ValueBuilder<AllocOp> |
using mlir::edsc::intrinsics::call = typedef OperationBuilder<mlir::CallOp> |
using mlir::edsc::intrinsics::constant_float = typedef ValueBuilder<ConstantFloatOp> |
using mlir::edsc::intrinsics::constant_index = typedef ValueBuilder<ConstantIndexOp> |
using mlir::edsc::intrinsics::constant_int = typedef ValueBuilder<ConstantIntOp> |
using mlir::edsc::intrinsics::dealloc = typedef OperationBuilder<DeallocOp> |
using mlir::edsc::intrinsics::dim = typedef ValueBuilder<DimOp> |
using mlir::edsc::intrinsics::linalg_fill = typedef OperationBuilder<linalg::FillOp> |
using mlir::edsc::intrinsics::linalg_reshape = typedef OperationBuilder<linalg::ReshapeOp> |
using mlir::edsc::intrinsics::linalg_yield = typedef OperationBuilder<linalg::YieldOp> |
using mlir::edsc::intrinsics::memref_cast = typedef ValueBuilder<MemRefCastOp> |
using mlir::edsc::intrinsics::mulf = typedef ValueBuilder<MulFOp> |
using mlir::edsc::intrinsics::muli = typedef ValueBuilder<MulIOp> |
using mlir::edsc::intrinsics::ret = typedef OperationBuilder<ReturnOp> |
using mlir::edsc::intrinsics::select = typedef ValueBuilder<SelectOp> |
using mlir::edsc::intrinsics::std_load = typedef ValueBuilder<LoadOp> |
using mlir::edsc::intrinsics::std_store = typedef OperationBuilder<StoreOp> |
using mlir::edsc::intrinsics::subi = typedef ValueBuilder<SubIOp> |
using mlir::edsc::intrinsics::tanh = typedef ValueBuilder<TanhOp> |
using mlir::edsc::intrinsics::view = typedef ValueBuilder<ViewOp> |
OperationHandle mlir::edsc::intrinsics::br | ( | BlockHandle | bh, |
ArrayRef< ValueHandle > | operands | ||
) |
Branches into the mlir::Block* captured by BlockHandle b
with operands
.
Prerequisites: All Handles have already captured previously constructed IR objects.
OperationHandle mlir::edsc::intrinsics::br | ( | BlockHandle * | bh, |
ArrayRef< ValueHandle *> | captures, | ||
ArrayRef< ValueHandle > | operands | ||
) |
Creates a new mlir::Block* and branches to it from the current block. Argument types are specified by operands
. Captures the new block in bh
and the actual operands
in captures
. To insert the new mlir::Block*, a local ScopedContext is constructed and released to the current block. The branch operation is then added to the new block.
Prerequisites: b
has not yet captured an mlir::Block*. No captures
have captured any mlir::Value. All operands
have already captured an mlir::Value captures.size() == operands.size() captures and operands are pairwise of the same type.
OperationHandle mlir::edsc::intrinsics::cond_br | ( | ValueHandle | cond, |
BlockHandle | trueBranch, | ||
ArrayRef< ValueHandle > | trueOperands, | ||
BlockHandle | falseBranch, | ||
ArrayRef< ValueHandle > | falseOperands | ||
) |
Branches into the mlir::Block* captured by BlockHandle trueBranch
with trueOperands
if cond
evaluates to true
(resp. falseBranch
and falseOperand
if cond
evaluates to false
).
Prerequisites: All Handles have captured previously constructed IR objects.
OperationHandle mlir::edsc::intrinsics::cond_br | ( | ValueHandle | cond, |
BlockHandle * | trueBranch, | ||
ArrayRef< ValueHandle *> | trueCaptures, | ||
ArrayRef< ValueHandle > | trueOperands, | ||
BlockHandle * | falseBranch, | ||
ArrayRef< ValueHandle *> | falseCaptures, | ||
ArrayRef< ValueHandle > | falseOperands | ||
) |
Eagerly creates new mlir::Block* with argument types specified by trueOperands
/falseOperands
. Captures the new blocks in trueBranch
/falseBranch
and the arguments in trueCaptures/falseCaptures
. To insert the new mlir::Block*, a local ScopedContext is constructed and released. The branch operation is then added in the original location and targeting the eagerly constructed blocks.
Prerequisites: trueBranch
/falseBranch
has not yet captured an mlir::Block*. No trueCaptures
/falseCaptures
have captured any mlir::Value. All trueOperands
/trueOperands
have already captured an mlir::Value trueCaptures
.size() == trueOperands
.size() falseCaptures
.size() == falseOperands
.size() trueCaptures
and trueOperands
are pairwise of the same type falseCaptures
and falseOperands
are pairwise of the same type.