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