// RUN: mlir-opt %s -test-linalg-transform-patterns=test-linalg-promotion-options -split-input-file | FileCheck %s func @gemm(%a : memref, %b : memref, %c : memref) { linalg.matmul {__internal_linalg_transform__ = "START"} ins(%a, %b: memref, memref) outs(%c: memref) return } // CHECK: func @gemm // CHECK-SAME: %[[ARG0:[a-zA-Z0-9_]+]]: memref // CHECK-SAME: %[[ARG1:[a-zA-Z0-9_]+]]: memref // CHECK-SAME: %[[ARG2:[a-zA-Z0-9_]+]]: memref // CHECK-DAG: %[[C42:.+]] = constant 4.200000e+01 : f32 // CHECK: scf.for // CHECK: scf.for // CHECK: scf.for // CHECK: %[[T7:.+]] = subview %[[ARG0]] // CHECK: %[[T12:.+]] = subview %[[ARG1]] // CHECK: %[[T17:.+]] = subview %[[ARG2]] // CHECK: %[[T18:.+]] = alloc(%{{.*}}, %{{.*}}) : memref // CHECK: %[[T19:.+]] = subview %[[T18]] // CHECK: %[[T20:.+]] = alloc(%{{.*}}, %{{.*}}) : memref // CHECK: %[[T21:.+]] = subview %[[T20]] // CHECK: linalg.fill(%[[T19]], %[[C42]]) // CHECK: linalg.copy(%[[T7]], %[[T19]]) // CHECK: linalg.fill(%[[T21]], %[[C42]]) // CHECK: linalg.copy(%[[T17]], %[[T21]]) // CHECK: linalg.matmul ins(%[[T19]], %[[T12]]{{.*}} outs(%[[T21]] // CHECK-NOT: linalg.fill // CHECK: linalg.copy(%[[T21]], %[[T17]]) // CHECK: dealloc %[[T18]] // CHECK: dealloc %[[T20]]