|
template<typename... Args> |
| ValueBuilder (Args... args) |
|
| ValueBuilder (ArrayRef< ValueHandle > vs) |
|
template<typename... Args> |
| ValueBuilder (ArrayRef< ValueHandle > vs, Args... args) |
|
template<typename T , typename... Args> |
| ValueBuilder (T t, ArrayRef< ValueHandle > vs, Args... args) |
|
template<typename T1 , typename T2 , typename... Args> |
| ValueBuilder (T1 t1, T2 t2, ArrayRef< ValueHandle > vs, Args... args) |
|
template<typename... Args> |
| ValueBuilder (OperationFolder *folder, Args... args) |
| Folder-based. More...
|
|
| ValueBuilder (OperationFolder *folder, ArrayRef< ValueHandle > vs) |
|
template<typename... Args> |
| ValueBuilder (OperationFolder *folder, ArrayRef< ValueHandle > vs, Args... args) |
|
template<typename T , typename... Args> |
| ValueBuilder (OperationFolder *folder, T t, ArrayRef< ValueHandle > vs, Args... args) |
|
template<typename T1 , typename T2 , typename... Args> |
| ValueBuilder (OperationFolder *folder, T1 t1, T2 t2, ArrayRef< ValueHandle > vs, Args... args) |
|
| ValueBuilder () |
|
Public Member Functions inherited from mlir::edsc::ValueHandle |
| ValueHandle (Type t) |
|
| ValueHandle (Value v) |
|
| ValueHandle (index_t cst) |
|
| ValueHandle (const ValueHandle &other)=default |
| ValueHandle is a value type, use the default copy constructor. More...
|
|
ValueHandle & | operator= (const ValueHandle &other) |
|
void | swap (ValueHandle &other) |
| Provide a swap operator. More...
|
|
| operator Value () const |
| Implicit conversion useful for automatic conversion to Container<Value>. More...
|
|
| operator bool () const |
|
bool | hasValue () const |
|
Value | getValue () const |
|
bool | hasType () const |
|
Type | getType () const |
|
Operation * | getOperation () const |
|
template<typename Op>
struct mlir::edsc::intrinsics::ValueBuilder< Op >
Helper variadic abstraction to allow extending to any MLIR op without boilerplate or Tablegen. Arguably a builder is not a ValueHandle but in practice it is only used as an alias to a notional ValueHandle<Op>. Implementing it as a subclass allows it to compose all the way to Value. Without subclassing, implicit conversion to Value would fail when composing in patterns such as: select(a, b, select(c, d, e))
.