xref: /aosp_15_r20/external/armnn/src/armnnTfLiteParser/test/Maximum.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "ParserFlatbuffersFixture.hpp"
7 
8 
9 TEST_SUITE("TensorflowLiteParser_Maximum")
10 {
11 struct MaximumFixture : public ParserFlatbuffersFixture
12 {
MaximumFixtureMaximumFixture13     explicit MaximumFixture(const std::string & inputShape1,
14                             const std::string & inputShape2,
15                             const std::string & outputShape)
16     {
17         m_JsonString = R"(
18             {
19                 "version": 3,
20                 "operator_codes": [ { "builtin_code": "MAXIMUM" } ],
21                 "subgraphs": [ {
22                     "tensors": [
23                         {
24                             "shape": )" + inputShape1 + R"(,
25                             "type": "FLOAT32",
26                             "buffer": 0,
27                             "name": "inputTensor1",
28                             "quantization": {
29                                 "min": [ 0.0 ],
30                                 "max": [ 255.0 ],
31                                 "scale": [ 1.0 ],
32                                 "zero_point": [ 0 ],
33                             }
34                         },
35                         {
36                             "shape": )" + inputShape2 + R"(,
37                             "type": "FLOAT32",
38                             "buffer": 1,
39                             "name": "inputTensor2",
40                             "quantization": {
41                                 "min": [ 0.0 ],
42                                 "max": [ 255.0 ],
43                                 "scale": [ 1.0 ],
44                                 "zero_point": [ 0 ],
45                             }
46                         },
47                         {
48                             "shape": )" + outputShape + R"( ,
49                             "type": "FLOAT32",
50                             "buffer": 2,
51                             "name": "outputTensor",
52                             "quantization": {
53                                 "min": [ 0.0 ],
54                                 "max": [ 255.0 ],
55                                 "scale": [ 1.0 ],
56                                 "zero_point": [ 0 ],
57                             }
58                         }
59                     ],
60                     "inputs": [ 0, 1 ],
61                     "outputs": [ 2 ],
62                     "operators": [
63                         {
64                             "opcode_index": 0,
65                             "inputs": [ 0, 1 ],
66                             "outputs": [ 2 ],
67                             "custom_options_format": "FLEXBUFFERS"
68                         }
69                     ],
70                 } ],
71                 "buffers" : [
72                     { },
73                     { }
74                 ]
75             }
76         )";
77         Setup();
78     }
79 };
80 
81 
82 struct MaximumFixture4D4D : MaximumFixture
83 {
MaximumFixture4D4DMaximumFixture4D4D84     MaximumFixture4D4D() : MaximumFixture("[ 1, 2, 2, 3 ]",
85                                           "[ 1, 2, 2, 3 ]",
86                                           "[ 1, 2, 2, 3 ]") {}
87 };
88 
89 TEST_CASE_FIXTURE(MaximumFixture4D4D, "ParseMaximum4D4D")
90 {
91   RunTest<4, armnn::DataType::Float32>(
92       0,
93       {{"inputTensor1", { 0.0f, 1.0f, 2.0f,
94                           3.0f, 4.0f, 5.0f,
95                           6.0f, 7.0f, 8.0f,
96                           9.0f, 10.0f, 11.0f }},
97       {"inputTensor2",  { 5.0f, 1.0f, 3.0f,
98                           4.0f, 5.5f, 1.0f,
99                           2.0f, 17.0f, 18.0f,
100                           19.0f, 1.0f, 3.0f }}},
101       {{"outputTensor", { 5.0f,  1.0f, 3.0f,
102                           4.0f,  5.5f, 5.0f,
103                           6.0f,  17.0f, 18.0f,
104                           19.0f, 10.0f, 11.0f }}});
105 }
106 
107 struct MaximumBroadcastFixture4D4D : MaximumFixture
108 {
MaximumBroadcastFixture4D4DMaximumBroadcastFixture4D4D109     MaximumBroadcastFixture4D4D() : MaximumFixture("[ 1, 1, 2, 1 ]",
110                                                    "[ 1, 2, 1, 3 ]",
111                                                    "[ 1, 2, 2, 3 ]") {}
112 };
113 
114 TEST_CASE_FIXTURE(MaximumBroadcastFixture4D4D, "ParseMaximumBroadcast4D4D")
115 {
116   RunTest<4, armnn::DataType::Float32>(
117       0,
118       {{"inputTensor1", { 2.0f, 4.0f }},
119       {"inputTensor2",  { 1.0f, 2.0f, 3.0f,
120                           4.0f, 5.0f, 6.0f }}},
121       {{"outputTensor", { 2.0f, 2.0f, 3.0f,
122                           4.0f, 4.0f, 4.0f,
123                           4.0f, 5.0f, 6.0f,
124                           4.0f, 5.0f, 6.0f }}});
125 }
126 
127 struct MaximumBroadcastFixture4D1D : MaximumFixture
128 {
MaximumBroadcastFixture4D1DMaximumBroadcastFixture4D1D129     MaximumBroadcastFixture4D1D() : MaximumFixture("[ 1, 2, 2, 3 ]",
130                                                    "[ 1 ]",
131                                                    "[ 1, 2, 2, 3 ]") {}
132 };
133 
134 TEST_CASE_FIXTURE(MaximumBroadcastFixture4D1D, "ParseMaximumBroadcast4D1D")
135 {
136   RunTest<4, armnn::DataType::Float32>(
137       0,
138       {{"inputTensor1", { 0.0f, 1.0f, 2.0f,
139                           3.0f, 4.0f, 5.0f,
140                           6.0f, 7.0f, 8.0f,
141                           9.0f, 10.0f, 11.0f }},
142       {"inputTensor2",  { 5.0f }}},
143       {{"outputTensor", { 5.0f, 5.0f, 5.0f,
144                           5.0f, 5.0f, 5.0f,
145                           6.0f, 7.0f, 8.0f,
146                           9.0f, 10.0f, 11.0f }}});
147 }
148 
149 struct MaximumBroadcastFixture1D4D : MaximumFixture
150 {
MaximumBroadcastFixture1D4DMaximumBroadcastFixture1D4D151     MaximumBroadcastFixture1D4D() : MaximumFixture("[ 1 ]",
152                                                    "[ 1, 2, 2, 3 ]",
153                                                    "[ 1, 2, 2, 3 ]") {}
154 };
155 
156 TEST_CASE_FIXTURE(MaximumBroadcastFixture1D4D, "ParseMaximumBroadcast1D4D")
157 {
158   RunTest<4, armnn::DataType::Float32>(
159       0,
160       {{"inputTensor1", { 3.0f }},
161       {"inputTensor2",  { 0.0f, 1.0f, 2.0f,
162                           3.0f, 4.0f, 5.0f,
163                           6.0f, 7.0f, 8.0f,
164                           9.0f, 10.0f, 11.0f }}},
165       {{"outputTensor", { 3.0f, 3.0f, 3.0f,
166                           3.0f, 4.0f, 5.0f,
167                           6.0f, 7.0f, 8.0f,
168                           9.0f, 10.0f, 11.0f }}});
169 }
170 
171 }
172