101 lines · plain
1// RUN: mlir-opt %s --split-input-file | mlir-opt | FileCheck %s2// RUN: mlir-opt %s --split-input-file --mlir-print-op-generic | mlir-opt | FileCheck %s3 4 5// -----6 7module {8 // CHECK: tosa.variable @stored_var = dense<3.140000e+00> : tensor<f32>9 tosa.variable @stored_var = dense<3.14> : tensor<f32>10 11 // CHECK-LABEL: @test_variable_scalar(12 // CHECK-SAME: %[[ADD_VAL:.*]]: tensor<f32>) {13 func.func @test_variable_scalar(%arg0: tensor<f32>) -> () {14 // CHECK: %[[STORED_VAL:.*]] = tosa.variable_read @stored_var : tensor<f32>15 %0 = tosa.variable_read @stored_var : tensor<f32>16 // CHECK: %[[RESULT_ADD:.*]] = tosa.add %[[ADD_VAL]], %[[STORED_VAL]] : (tensor<f32>, tensor<f32>) -> tensor<f32>17 %1 = "tosa.add"(%arg0, %0) : (tensor<f32>, tensor<f32>) -> tensor<f32>18 // CHECK: tosa.variable_write @stored_var, %[[RESULT_ADD]] : tensor<f32>19 tosa.variable_write @stored_var, %1 : tensor<f32>20 return21 }22}23 24 25// -----26 27module {28 // CHECK: tosa.variable @stored_var = dense<-1> : tensor<2x4x8xi32>29 tosa.variable @stored_var = dense<-1> : tensor<2x4x8xi32>30 31 // CHECK-LABEL: @test_variable_tensor(32 // CHECK-SAME: %[[ADD_VAL:.*]]: tensor<2x4x8xi32>) {33 func.func @test_variable_tensor(%arg0: tensor<2x4x8xi32>) -> () {34 // CHECK: %[[STORED_VAL:.*]] = tosa.variable_read @stored_var : tensor<2x4x8xi32>35 %0 = tosa.variable_read @stored_var : tensor<2x4x8xi32>36 // CHECK: %[[RESULT_ADD:.*]] = tosa.add %[[ADD_VAL]], %[[STORED_VAL]] : (tensor<2x4x8xi32>, tensor<2x4x8xi32>) -> tensor<2x4x8xi32>37 %1 = "tosa.add"(%arg0, %0) : (tensor<2x4x8xi32>, tensor<2x4x8xi32>) -> tensor<2x4x8xi32>38 // CHECK: tosa.variable_write @stored_var, %[[RESULT_ADD]] : tensor<2x4x8xi32>39 tosa.variable_write @stored_var, %1 : tensor<2x4x8xi32>40 return41 }42}43 44// -----45 46module {47 // CHECK: tosa.variable @stored_var : tensor<f32>48 tosa.variable @stored_var : tensor<f32>49 50 // CHECK-LABEL: @test_variable_scalar_no_initial_value(51 // CHECK-SAME: %[[ADD_VAL:.*]]: tensor<f32>) {52 func.func @test_variable_scalar_no_initial_value(%arg0: tensor<f32>) -> () {53 // CHECK: %[[STORED_VAL:.*]] = tosa.variable_read @stored_var : tensor<f32>54 %0 = tosa.variable_read @stored_var : tensor<f32>55 // CHECK: %[[RESULT_ADD:.*]] = tosa.add %[[ADD_VAL]], %[[STORED_VAL]] : (tensor<f32>, tensor<f32>) -> tensor<f32>56 %1 = "tosa.add"(%arg0, %0) : (tensor<f32>, tensor<f32>) -> tensor<f32>57 // CHECK: tosa.variable_write @stored_var, %[[RESULT_ADD]] : tensor<f32>58 tosa.variable_write @stored_var, %1 : tensor<f32>59 return60 }61}62 63// -----64 65module {66 // CHECK: tosa.variable @stored_var : tensor<2x4x8xi32>67 tosa.variable @stored_var : tensor<2x4x8xi32>68 69 // CHECK-LABEL: @test_variable_tensor_no_initial_value(70 // CHECK-SAME: %[[ADD_VAL:.*]]: tensor<2x4x8xi32>) {71 func.func @test_variable_tensor_no_initial_value(%arg0: tensor<2x4x8xi32>) -> () {72 // CHECK: %[[STORED_VAL:.*]] = tosa.variable_read @stored_var : tensor<2x4x8xi32>73 %0 = tosa.variable_read @stored_var : tensor<2x4x8xi32>74 // CHECK: %[[RESULT_ADD:.*]] = tosa.add %[[ADD_VAL]], %[[STORED_VAL]] : (tensor<2x4x8xi32>, tensor<2x4x8xi32>) -> tensor<2x4x8xi32>75 %1 = "tosa.add"(%arg0, %0) : (tensor<2x4x8xi32>, tensor<2x4x8xi32>) -> tensor<2x4x8xi32>76 // CHECK: tosa.variable_write @stored_var, %[[RESULT_ADD]] : tensor<2x4x8xi32>77 tosa.variable_write @stored_var, %1 : tensor<2x4x8xi32>78 return79 }80}81 82 83// -----84 85module {86 // CHECK: tosa.variable @stored_var : tensor<2x?x8xi32>87 tosa.variable @stored_var : tensor<2x?x8xi32>88 89 // CHECK-LABEL: @test_variable_tensor_with_unknowns(90 // CHECK-SAME: %[[ADD_VAL:.*]]: tensor<2x4x8xi32>) {91 func.func @test_variable_tensor_with_unknowns(%arg0: tensor<2x4x8xi32>) -> () {92 // CHECK: %[[STORED_VAL:.*]] = tosa.variable_read @stored_var : tensor<2x4x8xi32>93 %0 = tosa.variable_read @stored_var : tensor<2x4x8xi32>94 // CHECK: %[[RESULT_ADD:.*]] = tosa.add %[[ADD_VAL]], %[[STORED_VAL]] : (tensor<2x4x8xi32>, tensor<2x4x8xi32>) -> tensor<2x4x8xi32>95 %1 = "tosa.add"(%arg0, %0) : (tensor<2x4x8xi32>, tensor<2x4x8xi32>) -> tensor<2x4x8xi32>96 // CHECK: tosa.variable_write @stored_var, %[[RESULT_ADD]] : tensor<2x4x8xi32>97 tosa.variable_write @stored_var, %1 : tensor<2x4x8xi32>98 return99 }100}101