1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
//===- TestTransformOps.td ---------------------------------*- tablegen -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef TEST_TRANSFORM_OPS
#define TEST_TRANSFORM_OPS
include "mlir/Dialect/Transform/IR/TransformDialect.td"
include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.td"
include "mlir/Dialect/Transform/IR/TransformTypes.td"
include "mlir/Interfaces/SideEffectInterfaces.td"
include "mlir/IR/OpBase.td"
/// Transform dialect operations for testing transformations in MLIR
def TestMoveOperandDeps :
Op<Transform_Dialect, "test.move_operand_deps",
[FunctionalStyleTransformOpTrait, MemoryEffectsOpInterface,
DeclareOpInterfaceMethods<TransformOpInterface>,
ReportTrackingListenerFailuresOpTrait]> {
let description = [{
Moves all dependencies of on operation before another operation.
}];
let arguments =
(ins TransformHandleTypeInterface:$op,
TransformHandleTypeInterface:$insertion_point);
let results = (outs);
let assemblyFormat = [{
$op `before` $insertion_point attr-dict
`:` type($op) `,` type($insertion_point)
}];
}
def TestMoveValueDefns :
Op<Transform_Dialect, "test.move_value_defns",
[FunctionalStyleTransformOpTrait, MemoryEffectsOpInterface,
DeclareOpInterfaceMethods<TransformOpInterface>,
ReportTrackingListenerFailuresOpTrait]> {
let description = [{
Moves all dependencies of on operation before another operation.
}];
let arguments =
(ins Variadic<TransformValueHandleTypeInterface>:$values,
TransformHandleTypeInterface:$insertion_point);
let results = (outs);
let assemblyFormat = [{
$values `before` $insertion_point attr-dict
`:` `(` type($values) `)` `` `,` type($insertion_point)
}];
}
//===----------------------------------------------------------------------===//
// Test affine functionality.
//===----------------------------------------------------------------------===//
def TestMakeComposedFoldedAffineApply :
Op<Transform_Dialect, "test.make_composed_folded_affine_apply",
[FunctionalStyleTransformOpTrait,
MemoryEffectsOpInterface,
TransformOpInterface,
TransformEachOpTrait,
ReportTrackingListenerFailuresOpTrait]> {
let description = [{
Rewrite an affine_apply by using the makeComposedFoldedAffineApply API.
}];
let arguments = (ins TransformHandleTypeInterface:$op);
let results = (outs TransformHandleTypeInterface:$composed);
let assemblyFormat = [{
$op attr-dict `:` functional-type(operands, results)
}];
let extraClassDeclaration = [{
::mlir::DiagnosedSilenceableFailure applyToOne(
::mlir::transform::TransformRewriter &rewriter,
::mlir::affine::AffineApplyOp affineApplyOp,
::mlir::transform::ApplyToEachResultList &results,
::mlir::transform::TransformState &state);
}];
}
#endif // TEST_TRANSFORM_OPS
|