1//===- TestTransformDialectExtension.td --------------------*- tablegen -*-===// 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// This file declares the operations that are injected into the Transform 10// dialect through the extension mechanism, as a test. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef MLIR_TESTTRANSFORMDIALECTEXTENSION_TD 15#define MLIR_TESTTRANSFORMDIALECTEXTENSION_TD 16 17include "mlir/IR/OpBase.td" 18include "mlir/Dialect/Transform/IR/TransformDialect.td" 19include "mlir/Dialect/Transform/IR/TransformEffects.td" 20include "mlir/Dialect/Transform/IR/TransformInterfaces.td" 21include "mlir/Dialect/PDL/IR/PDLTypes.td" 22 23def TestProduceParamOrForwardOperandOp 24 : Op<Transform_Dialect, "test_produce_param_or_forward_operand", 25 [DeclareOpInterfaceMethods<TransformOpInterface>]> { 26 let arguments = (ins 27 Arg<Optional<PDL_Operation>, "", [TransformMappingRead]>:$operand, 28 OptionalAttr<I64Attr>:$parameter); 29 let results = (outs 30 Res<PDL_Operation, "", 31 [TransformMappingAlloc, TransformMappingWrite]>:$res); 32 let assemblyFormat = "(`from` $operand^)? ($parameter^)? attr-dict"; 33 let cppNamespace = "::mlir::test"; 34 let hasVerifier = 1; 35} 36 37def TestConsumeOperandIfMatchesParamOrFail 38 : Op<Transform_Dialect, "test_consume_operand_if_matches_param_or_fail", 39 [DeclareOpInterfaceMethods<TransformOpInterface>]> { 40 let arguments = (ins 41 Arg<PDL_Operation, "", 42 [TransformMappingWrite, TransformMappingFree]>:$operand, 43 I64Attr:$parameter); 44 let assemblyFormat = "$operand `[` $parameter `]` attr-dict"; 45 let cppNamespace = "::mlir::test"; 46} 47 48def TestPrintRemarkAtOperandOp 49 : Op<Transform_Dialect, "test_print_remark_at_operand", 50 [DeclareOpInterfaceMethods<TransformOpInterface>]> { 51 let arguments = (ins 52 Arg<PDL_Operation, "", 53 [TransformMappingRead, PayloadIRRead]>:$operand, 54 StrAttr:$message); 55 let assemblyFormat = "$operand `,` $message attr-dict"; 56 let cppNamespace = "::mlir::test"; 57} 58 59def TestAddTestExtensionOp 60 : Op<Transform_Dialect, "test_add_test_extension", 61 [DeclareOpInterfaceMethods<TransformOpInterface>, 62 NoSideEffect]> { 63 let arguments = (ins StrAttr:$message); 64 let assemblyFormat = "$message attr-dict"; 65 let cppNamespace = "::mlir::test"; 66} 67 68def TestCheckIfTestExtensionPresentOp 69 : Op<Transform_Dialect, "test_check_if_test_extension_present", 70 [DeclareOpInterfaceMethods<TransformOpInterface>]> { 71 let arguments = (ins 72 Arg<PDL_Operation, "", [TransformMappingRead, PayloadIRRead]>:$operand); 73 let assemblyFormat = "$operand attr-dict"; 74 let cppNamespace = "::mlir::test"; 75} 76 77def TestRemapOperandPayloadToSelfOp 78 : Op<Transform_Dialect, "test_remap_operand_to_self", 79 [DeclareOpInterfaceMethods<TransformOpInterface>]> { 80 let arguments = (ins 81 Arg<PDL_Operation, "", 82 [TransformMappingRead, TransformMappingWrite, PayloadIRRead]>:$operand); 83 let assemblyFormat = "$operand attr-dict"; 84 let cppNamespace = "::mlir::test"; 85} 86 87def TestRemoveTestExtensionOp 88 : Op<Transform_Dialect, "test_remove_test_extension", 89 [DeclareOpInterfaceMethods<TransformOpInterface>, 90 NoSideEffect]> { 91 let assemblyFormat = "attr-dict"; 92 let cppNamespace = "::mlir::test"; 93} 94 95def TestTransformOpWithRegions 96 : Op<Transform_Dialect, "test_transform_op_with_regions", 97 [DeclareOpInterfaceMethods<TransformOpInterface>, 98 DeclareOpInterfaceMethods<MemoryEffectsOpInterface>]> { 99 let regions = (region AnyRegion:$first, AnyRegion:$second); 100 let assemblyFormat = "attr-dict-with-keyword regions"; 101 let cppNamespace = "::mlir::test"; 102} 103 104def TestBranchingTransformOpTerminator 105 : Op<Transform_Dialect, "test_branching_transform_op_terminator", 106 [Terminator, DeclareOpInterfaceMethods<TransformOpInterface>, 107 DeclareOpInterfaceMethods<MemoryEffectsOpInterface>]> { 108 let successors = (successor VariadicSuccessor<AnySuccessor>:$succ); 109 let cppNamespace = "::mlir::test"; 110} 111 112#endif // MLIR_TESTTRANSFORMDIALECTEXTENSION_TD 113