blob: ec32c9862568189501c31fe449600cfba010e7fb [file]
// RUN: iree-opt -split-input-file -iree-mhlo-to-linalg-on-tensors %s | IreeFileCheck %s
func @dynamic_shape(%operand: tensor<?x?xf32>) -> (tensor<?x?xf32>)
attributes {iree.dispatch_fn_name = ""} {
%result = "mhlo.exponential"(%operand) : (tensor<?x?xf32>) -> tensor<?x?xf32>
return %result : tensor<?x?xf32>
}
// CHECK: #[[MAP0:.+]] = affine_map<(d0, d1) -> (d0, d1)>
// CHECK: func @dynamic_shape
// CHECK-SAME: %[[ARG0:.+]]: tensor<?x?xf32>
// CHECK: %[[C0:.+]] = constant 0 : index
// CHECK: %[[T0:.+]] = tensor.dim %[[ARG0]], %[[C0]]
// CHECK: %[[C1:.+]] = constant 1 : index
// CHECK: %[[T1:.+]] = tensor.dim %[[ARG0]], %[[C1]]
// CHECK: %[[T2:.+]] = linalg.init_tensor [%[[T0]], %[[T1]]]
// CHECK: %[[T3:.+]] = linalg.generic
// CHECK-SAME: indexing_maps = [#[[MAP0]], #[[MAP0]]]
// CHECK-SAME: iterator_types = ["parallel", "parallel"]}
// CHECK-SAME: ins(%[[ARG0]] : tensor<?x?xf32>)
// CHECK-SAME: outs(%[[T2]] : tensor<?x?xf32>)
// CHECK-NEXT: ^{{.+}}(%[[OPERAND_IN:[a-zA-Z0-9_]+]]: f32, %{{.+}}: f32):
// CHECK-NEXT: %[[RESULT:.+]] = math.exp %[[OPERAND_IN]] : f32
// CHECK-NEXT: linalg.yield %[[RESULT]] : f32
// CHECK: return %[[T3]]