96 lines · plain
1// RUN: mlir-opt %s -transform-interpreter -verify-diagnostics -split-input-file2 3// expected-note @below {{associated payload op}}4module attributes {transform.with_named_sequence} {5 transform.named_sequence @__transform_main(%arg0: !transform.any_op) {6 // expected-remark @below {{extension absent}}7 transform.test_check_if_test_extension_present %arg0 : !transform.any_op8 transform.test_add_test_extension "A"9 // expected-remark @below {{extension present, A}}10 transform.test_check_if_test_extension_present %arg0 : !transform.any_op11 transform.test_remove_test_extension12 // expected-remark @below {{extension absent}}13 transform.test_check_if_test_extension_present %arg0 : !transform.any_op14 transform.yield15 }16}17 18// -----19 20// expected-note @below {{associated payload op}}21module attributes {transform.with_named_sequence} {22 transform.named_sequence @__transform_main(%arg0: !transform.any_op) {23 transform.test_add_test_extension "A"24 transform.test_remove_test_extension25 transform.test_add_test_extension "B"26 // expected-remark @below {{extension present, B}}27 transform.test_check_if_test_extension_present %arg0 : !transform.any_op28 transform.yield29 }30}31 32// -----33 34// expected-note @below {{associated payload op}}35module attributes {transform.with_named_sequence} {36 transform.named_sequence @__transform_main(%arg0: !transform.any_op) {37 transform.test_add_test_extension "A"38 // expected-remark @below {{extension present, A}}39 transform.test_check_if_test_extension_present %arg0 : !transform.any_op40 // expected-note @below {{associated payload op}}41 transform.test_remap_operand_to_self %arg0 : (!transform.any_op) -> !transform.any_op42 // expected-remark @below {{extension present, A}}43 transform.test_check_if_test_extension_present %arg0 : !transform.any_op44 transform.yield45 }46}47 48// -----49 50module attributes {transform.with_named_sequence} {51 transform.named_sequence @__transform_main(%arg0: !transform.any_op) {52 transform.test_add_test_extension "A"53 // This is okay because we are replacing the top-level module operation54 // (0 results) with this operation that has _more_ (1) results.55 %dummy = transform.test_remap_operand_to_self %arg0 : (!transform.any_op) -> !transform.any_op56 transform.yield57 }58}59 60// -----61 62module attributes {transform.with_named_sequence} {63 transform.named_sequence @__transform_main(%arg0: !transform.any_op) {64 transform.test_add_test_extension "A"65 %dummy = transform.test_remap_operand_to_self %arg0 : (!transform.any_op) -> !transform.any_op66 // This is still okay. Even though we are replacing the previous67 // operation with (1 result) with this operation that has less (0) results,68 // there is no handle to the result, hence no issue with value handle update.69 transform.test_remap_operand_to_self %dummy : (!transform.any_op) -> !transform.any_op70 transform.yield71 }72}73 74// -----75 76module attributes {transform.with_named_sequence} {77 transform.named_sequence @__transform_main(%arg0: !transform.any_op) {78 transform.test_add_test_extension "A"79 // expected-error @below {{cannot replace an op with another op producing fewer results while tracking handles}}80 %dummy = transform.test_remap_operand_to_self %arg0 : (!transform.any_op) -> !transform.any_op81 %valuehandle = transform.get_result %dummy[0] : (!transform.any_op) -> !transform.any_value82 transform.test_remap_operand_to_self %dummy : (!transform.any_op) -> ()83 transform.yield84 }85}86 87// -----88 89module attributes {transform.with_named_sequence} {90 transform.named_sequence @__transform_main(%arg0: !transform.any_op) {91 // expected-error @below {{TestTransformStateExtension missing}}92 transform.test_remap_operand_to_self %arg0 : (!transform.any_op) -> !transform.any_op93 transform.yield94 }95}96