1//===- Utils.cpp - Transform dialect utilities ----------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "mlir/Dialect/Transform/Utils/Utils.h"
10
11#include "mlir/IR/OpDefinition.h"
12#include "mlir/Interfaces/ViewLikeInterface.h"
13
14using namespace mlir;
15using namespace mlir::transform;
16
17void mlir::transform::printPackedOrDynamicIndexList(
18 OpAsmPrinter &printer, Operation *op, Value packed, Type packedType,
19 OperandRange values, TypeRange valueTypes, DenseI64ArrayAttr integers) {
20 if (packed) {
21 assert(values.empty() && (!integers || integers.empty()) &&
22 "expected no values/integers");
23 printer << "*(" << packed;
24 if (packedType) {
25 printer << " : " << packedType;
26 }
27 printer << ")";
28 return;
29 }
30 printDynamicIndexList(printer, op, values, integers, valueTypes);
31}
32
33ParseResult mlir::transform::parsePackedOrDynamicIndexList(
34 OpAsmParser &parser, std::optional<OpAsmParser::UnresolvedOperand> &packed,
35 Type &packedType, SmallVectorImpl<OpAsmParser::UnresolvedOperand> &values,
36 SmallVectorImpl<Type> *valueTypes, DenseI64ArrayAttr &integers) {
37 OpAsmParser::UnresolvedOperand packedOperand;
38 if (parser.parseOptionalStar().succeeded()) {
39 if (parser.parseLParen().failed() ||
40 parser.parseOperand(result&: packedOperand).failed())
41 return failure();
42 if (packedType && (parser.parseColonType(result&: packedType).failed()))
43 return failure();
44 if (parser.parseRParen().failed())
45 return failure();
46 packed.emplace(args&: packedOperand);
47 integers = parser.getBuilder().getDenseI64ArrayAttr({});
48 return success();
49 }
50
51 return parseDynamicIndexList(parser, values, integers, valueTypes);
52}
53

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

source code of mlir/lib/Dialect/Transform/Utils/Utils.cpp