//===- 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, 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, ReportTrackingListenerFailuresOpTrait]> { let description = [{ Moves all dependencies of a list of values before another operation. Only pure operations are moved. If there is a side effecting op in the dependency chain no operations are moved. }]; let arguments = (ins Variadic:$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 { 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