MLIR  19.0.0git
Utils.h
Go to the documentation of this file.
1 //===- Utils.h - Transform dialect utilities --------------------*- C++ -*-===//
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 #ifndef MLIR_DIALECT_TRANSFORMS_UTILS_UTILS_H
10 #define MLIR_DIALECT_TRANSFORMS_UTILS_UTILS_H
11 
13 #include "mlir/IR/Value.h"
14 #include "mlir/IR/ValueRange.h"
15 #include "mlir/Support/LLVM.h"
16 
17 namespace mlir {
18 class OpAsmPrinter;
19 
20 namespace transform {
21 class TransformState;
22 
23 /// Printer hook for custom directive in assemblyFormat.
24 ///
25 /// custom<PackedOrDynamicIndexList>($packed, type($packed), $values,
26 /// type($values), $integers)
27 ///
28 /// where `values` are variadic Index values, `integers` is an `I64ArrayAttr`
29 /// and `packed` is a single transform dialect handle who's mapped payload ops
30 /// have a single Index result and represent the index list. Either `packed`
31 /// or the other two parameters may be specified.
32 ///
33 /// This allows idiomatic printing of mixed value and integer attributes in a
34 /// list or with a single handle. E.g., `[%arg0 : !transform.any_op, 7, 42,
35 /// %arg42 : !transform.param<i64>]` or just `%h : !transform.any_op`.
36 void printPackedOrDynamicIndexList(OpAsmPrinter &printer, Operation *op,
37  Value packed, Type packedType,
38  OperandRange values, TypeRange valueTypes,
39  DenseI64ArrayAttr integers);
40 
41 /// Parser hook for custom directive in assemblyFormat.
42 ///
43 /// custom<PackedOrDynamicIndexList>($packed, type($packed), $values,
44 /// type($values), $integers)
45 ///
46 /// See `printPackedOrDynamicIndexList` for details.
48  OpAsmParser &parser, std::optional<OpAsmParser::UnresolvedOperand> &packed,
49  Type &packedType, SmallVectorImpl<OpAsmParser::UnresolvedOperand> &values,
50  SmallVectorImpl<Type> &valueTypes, DenseI64ArrayAttr &integers);
51 } // namespace transform
52 } // namespace mlir
53 
54 #endif // MLIR_DIALECT_TRANSFORMS_UTILS_UTILS_H
void printPackedOrDynamicIndexList(OpAsmPrinter &printer, Operation *op, Value packed, Type packedType, OperandRange values, TypeRange valueTypes, DenseI64ArrayAttr integers)
Printer hook for custom directive in assemblyFormat.
Definition: Utils.cpp:17
ParseResult parsePackedOrDynamicIndexList(OpAsmParser &parser, std::optional< OpAsmParser::UnresolvedOperand > &packed, Type &packedType, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &values, SmallVectorImpl< Type > &valueTypes, DenseI64ArrayAttr &integers)
Parser hook for custom directive in assemblyFormat.
Definition: Utils.cpp:29
Include the generated interface declarations.
detail::DenseArrayAttrImpl< int64_t > DenseI64ArrayAttr