//===- TestTransformDialectExtension.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 // //===----------------------------------------------------------------------===// // // This file declares the operations that are injected into the Transform // dialect through the extension mechanism, as a test. // //===----------------------------------------------------------------------===// #ifndef MLIR_TESTTRANSFORMDIALECTEXTENSION_TD #define MLIR_TESTTRANSFORMDIALECTEXTENSION_TD include "mlir/IR/OpBase.td" include "mlir/Dialect/Transform/IR/TransformDialect.td" include "mlir/Dialect/Transform/IR/TransformEffects.td" include "mlir/Dialect/Transform/IR/TransformInterfaces.td" include "mlir/Dialect/PDL/IR/PDLTypes.td" def TestProduceParamOrForwardOperandOp : Op]> { let arguments = (ins Arg, "", [TransformMappingRead]>:$operand, OptionalAttr:$parameter); let results = (outs Res:$res); let assemblyFormat = "(`from` $operand^)? ($parameter^)? attr-dict"; let cppNamespace = "::mlir::test"; let hasVerifier = 1; } def TestConsumeOperand : Op]> { let arguments = (ins Arg:$operand); let assemblyFormat = "$operand attr-dict"; let cppNamespace = "::mlir::test"; } def TestConsumeOperandIfMatchesParamOrFail : Op]> { let arguments = (ins Arg:$operand, I64Attr:$parameter); let assemblyFormat = "$operand `[` $parameter `]` attr-dict"; let cppNamespace = "::mlir::test"; } def TestPrintRemarkAtOperandOp : Op]> { let arguments = (ins Arg:$operand, StrAttr:$message); let assemblyFormat = "$operand `,` $message attr-dict"; let cppNamespace = "::mlir::test"; } def TestAddTestExtensionOp : Op, NoSideEffect]> { let arguments = (ins StrAttr:$message); let assemblyFormat = "$message attr-dict"; let cppNamespace = "::mlir::test"; } def TestCheckIfTestExtensionPresentOp : Op]> { let arguments = (ins Arg:$operand); let assemblyFormat = "$operand attr-dict"; let cppNamespace = "::mlir::test"; } def TestRemapOperandPayloadToSelfOp : Op]> { let arguments = (ins Arg:$operand); let assemblyFormat = "$operand attr-dict"; let cppNamespace = "::mlir::test"; } def TestRemoveTestExtensionOp : Op, NoSideEffect]> { let assemblyFormat = "attr-dict"; let cppNamespace = "::mlir::test"; } def TestReversePayloadOpsOp : Op]> { let arguments = (ins PDL_Operation:$target); let results = (outs PDL_Operation:$result); let assemblyFormat = "$target attr-dict"; let cppNamespace = "::mlir::test"; } def TestTransformOpWithRegions : Op, DeclareOpInterfaceMethods]> { let regions = (region AnyRegion:$first, AnyRegion:$second); let assemblyFormat = "attr-dict-with-keyword regions"; let cppNamespace = "::mlir::test"; } def TestBranchingTransformOpTerminator : Op, DeclareOpInterfaceMethods]> { let successors = (successor VariadicSuccessor:$succ); let cppNamespace = "::mlir::test"; } def TestEmitRemarkAndEraseOperandOp : Op, MemoryEffectsOpInterface, FunctionalStyleTransformOpTrait]> { let arguments = (ins PDL_Operation:$target, StrAttr:$remark, UnitAttr:$fail_after_erase); let assemblyFormat = "$target `,` $remark attr-dict"; let cppNamespace = "::mlir::test"; } def TestWrongNumberOfResultsOp : Op { let arguments = (ins PDL_Operation:$target); let results = (outs PDL_Operation:$a, PDL_Operation:$b, PDL_Operation:$c); let assemblyFormat = "$target attr-dict"; let cppNamespace = "::mlir::test"; let extraClassDeclaration = [{ ::mlir::DiagnosedSilenceableFailure applyToOne( ::mlir::Operation * target, ::llvm::SmallVectorImpl<::mlir::Operation *> &results, ::mlir::transform::TransformState &state); }]; } def TestWrongNumberOfMultiResultsOp : Op { let arguments = (ins PDL_Operation:$target); let results = (outs PDL_Operation:$result); let assemblyFormat = "$target attr-dict"; let cppNamespace = "::mlir::test"; let extraClassDeclaration = [{ ::mlir::DiagnosedSilenceableFailure applyToOne( ::mlir::Operation * target, ::llvm::SmallVectorImpl<::mlir::Operation *> &results, ::mlir::transform::TransformState &state); }]; } def TestCorrectNumberOfMultiResultsOp : Op { let arguments = (ins PDL_Operation:$target); let results = (outs PDL_Operation:$result1, PDL_Operation:$result2); let assemblyFormat = "$target attr-dict"; let cppNamespace = "::mlir::test"; let extraClassDeclaration = [{ ::mlir::DiagnosedSilenceableFailure applyToOne( ::mlir::Operation * target, ::llvm::SmallVectorImpl<::mlir::Operation *> &results, ::mlir::transform::TransformState &state); }]; } def TestMixedNullAndNonNullResultsOp : Op { let arguments = (ins PDL_Operation:$target); let results = (outs PDL_Operation:$null, PDL_Operation:$non_null); let assemblyFormat = "$target attr-dict"; let cppNamespace = "::mlir::test"; let extraClassDeclaration = [{ ::mlir::DiagnosedSilenceableFailure applyToOne( ::mlir::Operation * target, ::llvm::SmallVectorImpl<::mlir::Operation *> &results, ::mlir::transform::TransformState &state); }]; } def TestMixedSuccessAndSilenceableOp : Op { let arguments = (ins PDL_Operation:$target); let results = (outs); let assemblyFormat = "$target attr-dict"; let cppNamespace = "::mlir::test"; let extraClassDeclaration = [{ ::mlir::DiagnosedSilenceableFailure applyToOne( ::mlir::Operation * target, ::llvm::SmallVectorImpl<::mlir::Operation *> &results, ::mlir::transform::TransformState &state); }]; } def TestPrintNumberOfAssociatedPayloadIROps : Op, DeclareOpInterfaceMethods]> { let arguments = (ins PDL_Operation:$handle); let assemblyFormat = "$handle attr-dict"; let cppNamespace = "::mlir::test"; } #endif // MLIR_TESTTRANSFORMDIALECTEXTENSION_TD