let assemblyFormat = "$operands attr-dict `:` type(results)";
}
-def Vector_TupleOp :
- Vector_Op<"tuple", [NoSideEffect]>,
- Arguments<(ins Variadic<AnyVector>:$vectors)>,
- Results<(outs TupleOf<[AnyVector]>)> {
- let summary = "make tuple of vectors operation";
- let description = [{
- Returns a tuple of its operands 'vectors'.
-
- Note that this operation is used during the vector op unrolling
- transformation and should be removed before lowering to lower-level
- dialects.
-
-
- Example:
-
- ```mlir
- %0 = vector.transfer_read ... : vector<2x2xf32>
- %1 = vector.transfer_read ... : vector<2x1xf32>
- %2 = vector.transfer_read ... : vector<2x2xf32>
- %3 = vector.transfer_read ... : vector<2x1xf32>
-
- %4 = vector.tuple %0, %1, %2, %3
- : vector<2x2xf32>, vector<2x1xf32>, vector<2x2xf32>, vector<2x1xf32>
- ```
- }];
-
- let extraClassDeclaration = [{
- TupleType getResultTupleType() {
- return getResult().getType().cast<TupleType>();
- }
- }];
-}
-
def Vector_TransposeOp :
Vector_Op<"transpose", [NoSideEffect,
PredOpTrait<"operand and result have same element type",
}
//===----------------------------------------------------------------------===//
-// TupleOp
-//===----------------------------------------------------------------------===//
-
-static ParseResult parseTupleOp(OpAsmParser &parser, OperationState &result) {
- SmallVector<OpAsmParser::OperandType, 4> operandInfos;
- SmallVector<Type, 4> types;
- auto loc = parser.getCurrentLocation();
- auto *ctx = parser.getBuilder().getContext();
- return failure(
- parser.parseOperandList(operandInfos) ||
- parser.parseOptionalAttrDict(result.attributes) ||
- parser.parseColonTypeList(types) ||
- parser.resolveOperands(operandInfos, types, loc, result.operands) ||
- parser.addTypeToList(TupleType::get(ctx, types), result.types));
-}
-
-static void print(OpAsmPrinter &p, TupleOp op) {
- p << op.getOperationName() << ' ';
- p.printOperands(op.getOperands());
- p.printOptionalAttrDict(op->getAttrs());
- p << " : ";
- llvm::interleaveComma(op->getOperandTypes(), p);
-}
-
-static LogicalResult verify(TupleOp op) { return success(); }
-
-//===----------------------------------------------------------------------===//
// TransposeOp
//===----------------------------------------------------------------------===//