// RUN: mlir-opt %s -transform-interpreter -split-input-file | FileCheck %s // CHECK-LABEL: func @tile_offset // CHECK-SAME: %[[ARG0:[a-zA-Z0-9_]+]]: func.func @tile_offset(%arg0 : tensor<9xf32>) -> tensor<6xf32> { %empty = tensor.empty() : tensor<6xf32> // CHECK: scf.for %[[ITER:[a-zA-Z0-9_]+]] = // CHECK: tensor.extract_slice %[[ARG0]][%[[ITER]]] [6] [1] %generic = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0 + 3)>, affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} ins(%arg0: tensor<9xf32>) outs(%empty : tensor<6xf32>) { ^bb0(%in : f32, %out: f32): linalg.yield %in : f32 } -> tensor<6xf32> return %generic : tensor<6xf32> } module attributes {transform.with_named_sequence} { transform.named_sequence @__transform_main(%arg1: !transform.any_op {transform.readonly}) { %0 = transform.structured.match ops{["linalg.generic"]} in %arg1 : (!transform.any_op) -> !transform.any_op %1, %loop = transform.structured.tile_using_for %0 tile_sizes [3] : (!transform.any_op) -> (!transform.any_op, !transform.any_op) transform.yield } }