brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · e9baffd Raw
139 lines · plain
1// RUN: mlir-opt %s | mlir-opt | FileCheck %s2 3// CHECK: transform.sequence4// CHECK: ^{{.+}}(%{{.+}}: !transform.any_op):5transform.sequence failures(propagate) {6^bb0(%arg0: !transform.any_op):7  // CHECK: sequence %{{.+}} : !transform.any_op8  // CHECK: ^{{.+}}(%{{.+}}: !transform.any_op):9  sequence %arg0 : !transform.any_op failures(propagate) {10  ^bb1(%arg1: !transform.any_op):11  }12}13 14// CHECK: transform.with_pdl_patterns15// CHECK: ^{{.+}}(%[[ARG:.+]]: !transform.any_op):16transform.with_pdl_patterns {17^bb0(%arg0: !transform.any_op):18  // CHECK: sequence %[[ARG]] : !transform.any_op19  sequence %arg0 : !transform.any_op failures(propagate) {20  ^bb1(%arg1: !transform.any_op):21  }22}23 24// Using the same value multiple times without consuming it is fine.25// CHECK: transform.sequence26// CHECK: %[[V:.+]] = sequence %{{.*}} : !transform.any_op -> !transform.any_op27// CHECK: sequence %[[V]]28// CHECK: sequence %[[V]]29transform.sequence failures(propagate) {30^bb0(%arg0: !transform.any_op):31  %0 = transform.sequence %arg0 : !transform.any_op -> !transform.any_op failures(propagate) {32  ^bb1(%arg1: !transform.any_op):33    yield %arg1 : !transform.any_op34  }35  transform.sequence %0 : !transform.any_op failures(propagate) {36  ^bb2(%arg2: !transform.any_op):37  }38  transform.sequence %0 : !transform.any_op failures(propagate) {39  ^bb3(%arg3: !transform.any_op):40  }41}42 43// CHECK: transform.sequence failures(propagate)44transform.sequence failures(propagate) {45^bb0(%arg0: !transform.any_op, %arg1: !transform.any_op, %arg2: !transform.any_op):46  // CHECK: sequence %{{.*}}, %{{.*}}, %{{.*}} : (!transform.any_op, !transform.any_op, !transform.any_op) failures(propagate)47  transform.sequence %arg0, %arg1, %arg2 : !transform.any_op, !transform.any_op, !transform.any_op failures(propagate) {48  ^bb0(%arg3: !transform.any_op, %arg4: !transform.any_op, %arg5: !transform.any_op):49  }50}51 52// CHECK: transform.sequence failures(propagate)53transform.sequence failures(propagate) {54^bb0(%arg0: !transform.any_op, %arg1: !transform.any_op, %arg2: !transform.any_op):55  // CHECK: sequence %{{.*}}, %{{.*}}, %{{.*}} : (!transform.any_op, !transform.any_op, !transform.any_op) failures(propagate)56  transform.sequence %arg0, %arg1, %arg2 : (!transform.any_op, !transform.any_op, !transform.any_op) failures(propagate) {57  ^bb0(%arg3: !transform.any_op, %arg4: !transform.any_op, %arg5: !transform.any_op):58  }59}60 61// CHECK: transform.sequence failures(propagate)62transform.sequence failures(propagate) {63^bb0(%arg0: !transform.any_op, %arg1: !transform.any_op, %arg2: !transform.any_op):64  // CHECK: sequence %{{.*}}, %{{.*}}, %{{.*}} : (!transform.any_op, !transform.any_op, !transform.any_op) failures(propagate)65  transform.sequence %arg0, %arg1, %arg2 : (!transform.any_op, !transform.any_op, !transform.any_op) failures(propagate) {66  ^bb0(%arg3: !transform.any_op, %arg4: !transform.any_op, %arg5: !transform.any_op):67  }68}69 70// CHECK: transform.sequence71transform.sequence failures(propagate) {72^bb0(%op0: !transform.any_op, %val0: !transform.any_value, %par0: !transform.any_param):73  // CHECK: foreach %{{.*}} : !transform.any_op74  transform.foreach %op0 : !transform.any_op {75  ^bb1(%op1: !transform.any_op):76  }77  // CHECK: foreach %{{.*}} : !transform.any_op, !transform.any_value, !transform.any_param78  transform.foreach %op0, %val0, %par0 : !transform.any_op, !transform.any_value, !transform.any_param {79  ^bb1(%op1: !transform.any_op, %val1: !transform.any_value, %par1: !transform.any_param):80  }81  // CHECK: foreach %{{.*}} : !transform.any_op, !transform.any_value, !transform.any_param -> !transform.any_op82  transform.foreach %op0, %val0, %par0 : !transform.any_op, !transform.any_value, !transform.any_param -> !transform.any_op {83  ^bb1(%op1: !transform.any_op, %val1: !transform.any_value, %par1: !transform.any_param):84    transform.yield %op1 : !transform.any_op85  }86  // CHECK: foreach %{{.*}} : !transform.any_op, !transform.any_value, !transform.any_param -> !transform.any_param, !transform.any_value87  transform.foreach %op0, %val0, %par0 : !transform.any_op, !transform.any_value, !transform.any_param -> !transform.any_param, !transform.any_value {88  ^bb1(%op1: !transform.any_op, %val1: !transform.any_value, %par1: !transform.any_param):89    transform.yield %par1, %val1 : !transform.any_param, !transform.any_value90  }91}92 93// CHECK: transform.sequence94transform.sequence failures(propagate) {95^bb0(%arg0: !transform.any_op):96  // CHECK: cast %{{.*}} : !transform.any_op to !transform.any_op97  %0 = cast %arg0: !transform.any_op to !transform.any_op98  // CHECK: cast %{{.*}} : !transform.any_op to !transform.op<"builtin.module">99  %1 = cast %0: !transform.any_op to !transform.op<"builtin.module">100}101 102// CHECK: transform.sequence103// CHECK-COUNT-9: print104transform.sequence failures(propagate) {105^bb0(%arg0: !transform.any_op):106  transform.print %arg0 : !transform.any_op107  transform.print108  transform.print %arg0 {name = "test"} : !transform.any_op109  transform.print {name = "test"}110  transform.print {name = "test", assume_verified}111  transform.print %arg0 {assume_verified} : !transform.any_op112  transform.print %arg0 {use_local_scope} : !transform.any_op113  transform.print %arg0 {skip_regions} : !transform.any_op114  transform.print %arg0 {assume_verified, use_local_scope, skip_regions} : !transform.any_op115}116 117// CHECK: transform.sequence118// CHECK: transform.structured.tile_using_for %0 tile_sizes [4, 4, [4]]119transform.sequence failures(propagate) {120^bb0(%arg1: !transform.any_op):121  %0 = transform.structured.match ops{["linalg.matmul"]} in %arg1 : (!transform.any_op) -> !transform.any_op122  transform.structured.tile_using_for %0 tile_sizes [4, 4, [4]] : (!transform.any_op) -> (!transform.any_op, !transform.any_op, !transform.any_op, !transform.any_op)123}124 125// CHECK: transform.sequence126// CHECK: transform.structured.tile_using_for %0 tile_sizes {{\[}}[2], 4, 8]127transform.sequence failures(propagate) {128^bb0(%arg1: !transform.any_op):129  %0 = transform.structured.match ops{["linalg.matmul"]} in %arg1 : (!transform.any_op) -> !transform.any_op130  transform.structured.tile_using_for %0 tile_sizes [[2], 4, 8] : (!transform.any_op) -> (!transform.any_op, !transform.any_op, !transform.any_op, !transform.any_op)131}132 133// CHECK: transform.sequence134// CHECK: transform.param.constant "example_string135transform.sequence failures(propagate) {136^bb0(%arg1: !transform.any_op):137  transform.param.constant "example_string" -> !transform.any_param138}139