summaryrefslogtreecommitdiffstats
path: root/mlir/lib/Dialect/VectorOps/VectorOps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/lib/Dialect/VectorOps/VectorOps.cpp')
-rw-r--r--mlir/lib/Dialect/VectorOps/VectorOps.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/mlir/lib/Dialect/VectorOps/VectorOps.cpp b/mlir/lib/Dialect/VectorOps/VectorOps.cpp
index 2dfa4568a3e..fc8abd710e9 100644
--- a/mlir/lib/Dialect/VectorOps/VectorOps.cpp
+++ b/mlir/lib/Dialect/VectorOps/VectorOps.cpp
@@ -347,6 +347,42 @@ SmallVector<AffineMap, 4> ContractionOp::getIndexingMaps() {
}
//===----------------------------------------------------------------------===//
+// ExtractElementOp
+//===----------------------------------------------------------------------===//
+
+static void print(OpAsmPrinter &p, vector::ExtractElementOp op) {
+ p << op.getOperationName() << " " << *op.vector() << "[" << *op.position()
+ << " : " << op.position()->getType() << "]";
+ p.printOptionalAttrDict(op.getAttrs());
+ p << " : " << op.vector()->getType();
+}
+
+static ParseResult parseExtractElementOp(OpAsmParser &parser,
+ OperationState &result) {
+ OpAsmParser::OperandType vector, position;
+ Type positionType;
+ VectorType vectorType;
+ if (parser.parseOperand(vector) || parser.parseLSquare() ||
+ parser.parseOperand(position) || parser.parseColonType(positionType) ||
+ parser.parseRSquare() ||
+ parser.parseOptionalAttrDict(result.attributes) ||
+ parser.parseColonType(vectorType))
+ return failure();
+ Type resultType = vectorType.getElementType();
+ return failure(
+ parser.resolveOperand(vector, vectorType, result.operands) ||
+ parser.resolveOperand(position, positionType, result.operands) ||
+ parser.addTypeToList(resultType, result.types));
+}
+
+static LogicalResult verify(vector::ExtractElementOp op) {
+ VectorType vectorType = op.getVectorType();
+ if (vectorType.getRank() != 1)
+ return op.emitOpError("expected 1-D vector");
+ return success();
+}
+
+//===----------------------------------------------------------------------===//
// ExtractOp
//===----------------------------------------------------------------------===//
@@ -685,6 +721,44 @@ static ParseResult parseShuffleOp(OpAsmParser &parser, OperationState &result) {
}
//===----------------------------------------------------------------------===//
+// InsertElementOp
+//===----------------------------------------------------------------------===//
+
+static void print(OpAsmPrinter &p, InsertElementOp op) {
+ p << op.getOperationName() << " " << *op.source() << ", " << *op.dest() << "["
+ << *op.position() << " : " << op.position()->getType() << "]";
+ p.printOptionalAttrDict(op.getAttrs());
+ p << " : " << op.dest()->getType();
+}
+
+static ParseResult parseInsertElementOp(OpAsmParser &parser,
+ OperationState &result) {
+ OpAsmParser::OperandType source, dest, position;
+ Type positionType;
+ VectorType destType;
+ if (parser.parseOperand(source) || parser.parseComma() ||
+ parser.parseOperand(dest) || parser.parseLSquare() ||
+ parser.parseOperand(position) || parser.parseColonType(positionType) ||
+ parser.parseRSquare() ||
+ parser.parseOptionalAttrDict(result.attributes) ||
+ parser.parseColonType(destType))
+ return failure();
+ Type sourceType = destType.getElementType();
+ return failure(
+ parser.resolveOperand(source, sourceType, result.operands) ||
+ parser.resolveOperand(dest, destType, result.operands) ||
+ parser.resolveOperand(position, positionType, result.operands) ||
+ parser.addTypeToList(destType, result.types));
+}
+
+static LogicalResult verify(InsertElementOp op) {
+ auto dstVectorType = op.getDestVectorType();
+ if (dstVectorType.getRank() != 1)
+ return op.emitOpError("expected 1-D vector");
+ return success();
+}
+
+//===----------------------------------------------------------------------===//
// InsertOp
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud