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