mlir::OpTrait::OneResult,
mlir::OpTrait::HasNoSideEffect> {
public:
+ friend mlir::Operation;
using Op::Op;
//////////////////////////////////////////////////////////////////////////////
mlir::OpTrait::OneResult,
mlir::OpTrait::HasNoSideEffect> {
public:
+ friend mlir::Operation;
using Op::Op;
//////////////////////////////////////////////////////////////////////////////
mlir::OpTrait::OneResult,
mlir::OpTrait::HasNoSideEffect> {
public:
+ friend mlir::Operation;
using Op::Op;
//////////////////////////////////////////////////////////////////////////////
public mlir::Op<DotOp, mlir::OpTrait::VariadicOperands,
mlir::OpTrait::ZeroResult> {
public:
+ friend mlir::Operation;
using Op::Op;
using TensorContractionBaseType =
TensorContractionBase::TensorContractionBaseType;
public mlir::Op<MatvecOp, mlir::OpTrait::VariadicOperands,
mlir::OpTrait::ZeroResult> {
public:
+ friend mlir::Operation;
using Op::Op;
using TensorContractionBaseType =
TensorContractionBase::TensorContractionBaseType;
public mlir::Op<MatmulOp, mlir::OpTrait::VariadicOperands,
mlir::OpTrait::ZeroResult> {
public:
+ friend mlir::Operation;
using Op::Op;
using TensorContractionBaseType =
TensorContractionBase::TensorContractionBaseType;
class LoadOp : public mlir::Op<LoadOp, mlir::OpTrait::VariadicOperands,
mlir::OpTrait::OneResult> {
public:
+ friend mlir::Operation;
using Op::Op;
//////////////////////////////////////////////////////////////////////////////
class StoreOp : public mlir::Op<StoreOp, mlir::OpTrait::VariadicOperands,
mlir::OpTrait::ZeroResult> {
public:
+ friend mlir::Operation;
using Op::Op;
//////////////////////////////////////////////////////////////////////////////
mlir::FloatAttr value);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
llvm::StringRef getCalleeName();
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getOperand() { return getOperation()->getOperand(0); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *value);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *value);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *value, ToyArrayType reshapedType);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getRHS() { return getOperand(1); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getRHS() { return getOperand(1); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::FloatAttr value);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
llvm::StringRef getCalleeName();
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getOperand() { return getOperation()->getOperand(0); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *value);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::MLIRContext *context);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::MLIRContext *context);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getRHS() { return getOperand(1); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getRHS() { return getOperand(1); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
}
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
llvm::StringRef getCalleeName();
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getOperand() { return getOperation()->getOperand(0); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *value);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::MLIRContext *context);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::MLIRContext *context);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getRHS() { return getOperand(1); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Value *getRHS() { return getOperand(1); }
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::Type retType);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
mlir::MLIRContext *context);
/// Inherit constructor.
+ friend mlir::Operation;
using Op::Op;
};
class AffineApplyOp : public Op<AffineApplyOp, OpTrait::VariadicOperands,
OpTrait::OneResult, OpTrait::HasNoSideEffect> {
public:
+ friend Operation;
using Op::Op;
/// Builds an affine apply op with the specified map and operands.
class AffineForOp
: public Op<AffineForOp, OpTrait::VariadicOperands, OpTrait::ZeroResult> {
public:
+ friend Operation;
using Op::Op;
// Hooks to customize behavior of this op.
class AffineIfOp
: public Op<AffineIfOp, OpTrait::VariadicOperands, OpTrait::ZeroResult> {
public:
+ friend Operation;
using Op::Op;
// Hooks to customize behavior of this op.
: public Op<AffineTerminatorOp, OpTrait::ZeroOperands, OpTrait::ZeroResult,
OpTrait::IsTerminator> {
public:
+ friend Operation;
using Op::Op;
static void build(Builder *, OperationState *) {}
OpTrait::ZeroResult,
OpTrait::NthRegionIsIsolatedAbove<0>::Impl> {
public:
+ friend Operation;
using Op::Op;
static void build(Builder *builder, OperationState *result, Value *gridSizeX,
class BufferAllocOp
: public Op<BufferAllocOp, OpTrait::OneOperand, OpTrait::OneResult> {
public:
+ friend Operation;
using Op::Op;
// Hooks to customize the behavior of this op.
class BufferDeallocOp
: public Op<BufferDeallocOp, OpTrait::OneOperand, OpTrait::ZeroResult> {
public:
+ friend Operation;
using Op::Op;
// Hooks to customize the behavior of this op.
class RangeOp : public Op<RangeOp, OpTrait::NOperands<3>::Impl,
OpTrait::OneResult, OpTrait::HasNoSideEffect> {
public:
+ friend Operation;
using Op::Op;
// Hooks to customize the behavior of this op.
enum { FirstIndexingOperand = 1 };
public:
+ friend Operation;
using Op::Op;
// Hooks to customize the behavior of this op.
enum { FirstIndexingOperand = 1 };
public:
+ friend Operation;
using Op::Op;
// Hooks to customize the behavior of this op.
class AllocOp
: public Op<AllocOp, OpTrait::VariadicOperands, OpTrait::OneResult> {
public:
+ friend Operation;
using Op::Op;
/// The result of an alloc is always a MemRefType.
class BranchOp : public Op<BranchOp, OpTrait::VariadicOperands,
OpTrait::ZeroResult, OpTrait::IsTerminator> {
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "std.br"; }
class CallOp
: public Op<CallOp, OpTrait::VariadicOperands, OpTrait::VariadicResults> {
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "std.call"; }
class CallIndirectOp : public Op<CallIndirectOp, OpTrait::VariadicOperands,
OpTrait::VariadicResults> {
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "std.call_indirect"; }
OpTrait::OneResult, OpTrait::ResultsAreBoolLike,
OpTrait::SameOperandsAndResultShape, OpTrait::HasNoSideEffect> {
public:
+ friend Operation;
using Op::Op;
CmpIPredicate getPredicate() {
/// follows:
/// { condition, [true_operands], [false_operands] }
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "std.cond_br"; }
///
class ConstantFloatOp : public ConstantOp {
public:
+ friend Operation;
using ConstantOp::ConstantOp;
/// Builds a constant float op producing a float of the specified type.
///
class ConstantIntOp : public ConstantOp {
public:
+ friend Operation;
using ConstantOp::ConstantOp;
/// Build a constant int op producing an integer of the specified width.
static void build(Builder *builder, OperationState *result, int64_t value,
///
class ConstantIndexOp : public ConstantOp {
public:
+ friend Operation;
using ConstantOp::ConstantOp;
/// Build a constant int op producing an index.
class DeallocOp
: public Op<DeallocOp, OpTrait::OneOperand, OpTrait::ZeroResult> {
public:
+ friend Operation;
using Op::Op;
Value *getMemRef() { return getOperand(); }
class DimOp : public Op<DimOp, OpTrait::OneOperand, OpTrait::OneResult,
OpTrait::HasNoSideEffect> {
public:
+ friend Operation;
using Op::Op;
static void build(Builder *builder, OperationState *result,
class DmaStartOp
: public Op<DmaStartOp, OpTrait::VariadicOperands, OpTrait::ZeroResult> {
public:
+ friend Operation;
using Op::Op;
static void build(Builder *builder, OperationState *result, Value *srcMemRef,
class DmaWaitOp
: public Op<DmaWaitOp, OpTrait::VariadicOperands, OpTrait::ZeroResult> {
public:
+ friend Operation;
using Op::Op;
static void build(Builder *builder, OperationState *result, Value *tagMemRef,
: public Op<ExtractElementOp, OpTrait::VariadicOperands, OpTrait::OneResult,
OpTrait::HasNoSideEffect> {
public:
+ friend Operation;
using Op::Op;
static void build(Builder *builder, OperationState *result, Value *aggregate,
class LoadOp
: public Op<LoadOp, OpTrait::VariadicOperands, OpTrait::OneResult> {
public:
+ friend Operation;
using Op::Op;
// Hooks to customize behavior of this op.
///
class MemRefCastOp : public CastOp<MemRefCastOp> {
public:
+ friend Operation;
using CastOp::CastOp;
static StringRef getOperationName() { return "std.memref_cast"; }
class ReturnOp : public Op<ReturnOp, OpTrait::VariadicOperands,
OpTrait::ZeroResult, OpTrait::IsTerminator> {
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "std.return"; }
class SelectOp : public Op<SelectOp, OpTrait::NOperands<3>::Impl,
OpTrait::OneResult, OpTrait::HasNoSideEffect> {
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "std.select"; }
class StoreOp
: public Op<StoreOp, OpTrait::VariadicOperands, OpTrait::ZeroResult> {
public:
+ friend Operation;
using Op::Op;
// Hooks to customize behavior of this op.
///
class TensorCastOp : public CastOp<TensorCastOp> {
public:
+ friend Operation;
using CastOp::CastOp;
static StringRef getOperationName() { return "std.tensor_cast"; }
enum Offsets : unsigned { MemRefOffset = 0, FirstIndexOffset = 1 };
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "vector.transfer_read"; }
};
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "vector.transfer_write"; }
class VectorTypeCastOp
: public Op<VectorTypeCastOp, OpTrait::OneOperand, OpTrait::OneResult> {
public:
+ friend Operation;
using Op::Op;
static StringRef getOperationName() { return "vector.type_cast"; }
for (const auto &trait : traits)
os << ", " << trait;
os << "> {\npublic:\n";
+ os << " friend Operation;\n";
os << " using Op::Op;\n";
for (const auto &method : methods) {
method.writeDeclTo(os);