brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 1580183 Raw
42 lines · plain
1// DEFINE: %{pipeline} = "builtin.module(\2// DEFINE:   func.func(\3// DEFINE:     tosa-to-linalg\4// DEFINE:   ),\5// DEFINE:   one-shot-bufferize{\6// DEFINE:     bufferize-function-boundaries\7// DEFINE:     function-boundary-type-conversion=identity-layout-map\8// DEFINE:     buffer-alignment=0\9// DEFINE:   },\10// DEFINE:   buffer-results-to-out-params{\11// DEFINE:     hoist-static-allocs=true\12// DEFINE:   },\13// DEFINE:   func.func(\14// DEFINE:     convert-linalg-to-loops\15// DEFINE:   ),\16// DEFINE:   canonicalize,\17// DEFINE:   convert-to-emitc\18// DEFINE: )"19 20// RUN: mlir-opt --pass-pipeline=%{pipeline} %s | FileCheck %s21// -----22 23//      CHECK: emitc.func private @main(%[[ARG0:.*]]: !emitc.array<2xf32>, %[[ARG1:.*]]: !emitc.array<2xf32>, %[[RES:.*]]: !emitc.array<2xf32>)24//  CHECK-DAG:   %[[C0:.*]] = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t25//  CHECK-DAG:   %[[C1:.*]] = "emitc.constant"() <{value = 1 : index}> : () -> !emitc.size_t26//  CHECK-DAG:   %[[C2:.*]] = "emitc.constant"() <{value = 2 : index}> : () -> !emitc.size_t27// CHECK-NEXT:   for %[[INDEX:.*]] = %[[C0]] to %[[C2]] step %[[C1]] : !emitc.size_t {28// CHECK-NEXT:     %[[V0_LVALUE:.*]] = subscript %[[ARG0]][%[[INDEX]]] : (!emitc.array<2xf32>, !emitc.size_t) -> !emitc.lvalue<f32>29// CHECK-NEXT:     %[[V0:.*]] = load %[[V0_LVALUE]] : <f32>30// CHECK-NEXT:     %[[V1_LVALUE:.*]] = subscript %[[ARG1]][%[[INDEX]]] : (!emitc.array<2xf32>, !emitc.size_t) -> !emitc.lvalue<f32>31// CHECK-NEXT:     %[[V1:.*]] = load %[[V1_LVALUE]] : <f32>32// CHECK-NEXT:     %[[VADD:.*]] = add %[[V0]], %[[V1]] : (f32, f32) -> f3233// CHECK-NEXT:     %[[RES_LVALUE:.*]] = subscript %[[RES]][%[[INDEX]]] : (!emitc.array<2xf32>, !emitc.size_t) -> !emitc.lvalue<f32>34// CHECK-NEXT:     assign %[[VADD]] : f32 to %[[RES_LVALUE]] : <f32>35// CHECK-NEXT:   }36// CHECK-NEXT:   return37// CHECK-NEXT: }38func.func private @main(%arg0: tensor<2xf32>, %arg1: tensor<2xf32>) -> tensor<2xf32> {39  %0 = tosa.add %arg0, %arg1 : (tensor<2xf32>, tensor<2xf32>) -> tensor<2xf32>40  return %0 : tensor<2xf32>41}42