brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 6c2a356 Raw
81 lines · plain
1// RUN: mlir-opt %s -transform-interpreter -split-input-file -verify-diagnostics --allow-unregistered-dialect | FileCheck %s2 3func.func @if_no_else(%cond: i1, %a: index, %b: memref<?xf32>, %c: i8) {4  scf.if %cond {5    "some_op"(%cond, %b) : (i1, memref<?xf32>) -> ()6    scf.yield7  }8  return9}10 11module attributes {transform.with_named_sequence} {12  transform.named_sequence @__transform_main(%arg1: !transform.any_op {transform.readonly}) {13    %if = transform.structured.match ops{["scf.if"]} in %arg114      : (!transform.any_op) -> !transform.any_op15    // expected-error @+1 {{requires an scf.if op with a single-block `else` region}}16    transform.scf.take_assumed_branch %if take_else_branch17      : (!transform.any_op) -> ()18      transform.yield19  }20}21 22// -----23 24// CHECK-LABEL: if_no_else25func.func @if_no_else(%cond: i1, %a: index, %b: memref<?xf32>, %c: i8) {26  scf.if %cond {27    "some_op"(%cond, %b) : (i1, memref<?xf32>) -> ()28    scf.yield29  }30  return31}32 33module attributes {transform.with_named_sequence} {34  transform.named_sequence @__transform_main(%arg1: !transform.any_op {transform.readonly}) {35    %if = transform.structured.match ops{["scf.if"]} in %arg136      : (!transform.any_op) -> !transform.any_op37    %some_op = transform.structured.match ops{["some_op"]} in %arg138      : (!transform.any_op) -> !transform.any_op39 40    transform.scf.take_assumed_branch %if : (!transform.any_op) -> ()41 42    // Handle to formerly nested `some_op` is still valid after the transform.43    transform.print %some_op: !transform.any_op44    transform.yield45  }46}47 48// -----49 50// CHECK-LABEL: tile_tensor_pad51func.func @tile_tensor_pad(52  %arg0 : tensor<?x?xf32>, %cst : f32, %low: index, %high: index)53    -> tensor<20x40xf32>54{55  //     CHECK: scf.forall56  // CHECK-NOT:   scf.if57  // CHECK-NOT:     tensor.generate58  // CHECK-NOT:   else59  //     CHECK:     tensor.pad {{.*}} nofold60  %0 = tensor.pad %arg0 nofold low[%low, %low] high[%high, %high] {61        ^bb0(%arg9: index, %arg10: index):62          tensor.yield %cst : f3263  } : tensor<?x?xf32> to tensor<20x40xf32>64  return %0 : tensor<20x40xf32>65}66 67module attributes {transform.with_named_sequence} {68  transform.named_sequence @__transform_main(%arg1: !transform.any_op {transform.readonly}) {69    %0 = transform.structured.match ops{["tensor.pad"]} in %arg170      : (!transform.any_op) -> !transform.any_op71    transform.structured.tile_using_forall %0 tile_sizes[1, 1]72      : (!transform.any_op) -> (!transform.any_op, !transform.any_op)73 74    %if = transform.structured.match ops{["scf.if"]} in %arg175      : (!transform.any_op) -> !transform.any_op76    transform.scf.take_assumed_branch %if take_else_branch77      : (!transform.any_op) -> ()78      transform.yield79  }80}81