1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 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 "armnnTfLiteParser/ITfLiteParser.hpp" 7*89c4ff92SAndroid Build Coastguard Worker #include "ParserFlatbuffersFixture.hpp" 8*89c4ff92SAndroid Build Coastguard Worker 9*89c4ff92SAndroid Build Coastguard Worker 10*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("TensorflowLiteParser_LoadScopeDynamicTensor") 11*89c4ff92SAndroid Build Coastguard Worker { 12*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorFixture : public ParserFlatbuffersFixture 13*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensorFixtureLoadScopeDynamicTensorFixture14*89c4ff92SAndroid Build Coastguard Worker explicit LoadScopeDynamicTensorFixture(const std::string& shape0, 15*89c4ff92SAndroid Build Coastguard Worker const std::string& shape1, 16*89c4ff92SAndroid Build Coastguard Worker const std::string& shape2) 17*89c4ff92SAndroid Build Coastguard Worker { 18*89c4ff92SAndroid Build Coastguard Worker m_JsonString = R"( 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker "version": 3, 21*89c4ff92SAndroid Build Coastguard Worker "operator_codes": [ 22*89c4ff92SAndroid Build Coastguard Worker { 23*89c4ff92SAndroid Build Coastguard Worker "builtin_code": "AVERAGE_POOL_2D", 24*89c4ff92SAndroid Build Coastguard Worker "version": 1 25*89c4ff92SAndroid Build Coastguard Worker }, 26*89c4ff92SAndroid Build Coastguard Worker { 27*89c4ff92SAndroid Build Coastguard Worker "builtin_code": "SOFTMAX", 28*89c4ff92SAndroid Build Coastguard Worker "version": 1 29*89c4ff92SAndroid Build Coastguard Worker } 30*89c4ff92SAndroid Build Coastguard Worker ], 31*89c4ff92SAndroid Build Coastguard Worker "subgraphs": [ 32*89c4ff92SAndroid Build Coastguard Worker { 33*89c4ff92SAndroid Build Coastguard Worker "tensors": [ 34*89c4ff92SAndroid Build Coastguard Worker { 35*89c4ff92SAndroid Build Coastguard Worker "shape": )" + shape0 + R"(, 36*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 37*89c4ff92SAndroid Build Coastguard Worker "buffer": 1, 38*89c4ff92SAndroid Build Coastguard Worker "name": "input0", 39*89c4ff92SAndroid Build Coastguard Worker "quantization": { 40*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 41*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 42*89c4ff92SAndroid Build Coastguard Worker }, 43*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 44*89c4ff92SAndroid Build Coastguard Worker }, 45*89c4ff92SAndroid Build Coastguard Worker { 46*89c4ff92SAndroid Build Coastguard Worker "shape": )" + shape1 + R"(, 47*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 48*89c4ff92SAndroid Build Coastguard Worker "buffer": 3, 49*89c4ff92SAndroid Build Coastguard Worker "name": "output", 50*89c4ff92SAndroid Build Coastguard Worker "quantization": { 51*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 52*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 53*89c4ff92SAndroid Build Coastguard Worker }, 54*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 55*89c4ff92SAndroid Build Coastguard Worker }, 56*89c4ff92SAndroid Build Coastguard Worker { 57*89c4ff92SAndroid Build Coastguard Worker "shape": )" + shape2 + R"(, 58*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 59*89c4ff92SAndroid Build Coastguard Worker "buffer": 2, 60*89c4ff92SAndroid Build Coastguard Worker "name": "model/average_pooling2d/AvgPool", 61*89c4ff92SAndroid Build Coastguard Worker "quantization": { 62*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 63*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 64*89c4ff92SAndroid Build Coastguard Worker }, 65*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 66*89c4ff92SAndroid Build Coastguard Worker } 67*89c4ff92SAndroid Build Coastguard Worker ], 68*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 69*89c4ff92SAndroid Build Coastguard Worker 0 70*89c4ff92SAndroid Build Coastguard Worker ], 71*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 72*89c4ff92SAndroid Build Coastguard Worker 1 73*89c4ff92SAndroid Build Coastguard Worker ], 74*89c4ff92SAndroid Build Coastguard Worker "operators": [ 75*89c4ff92SAndroid Build Coastguard Worker { 76*89c4ff92SAndroid Build Coastguard Worker "opcode_index": 1, 77*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 78*89c4ff92SAndroid Build Coastguard Worker 2 79*89c4ff92SAndroid Build Coastguard Worker ], 80*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 81*89c4ff92SAndroid Build Coastguard Worker 1 82*89c4ff92SAndroid Build Coastguard Worker ], 83*89c4ff92SAndroid Build Coastguard Worker "builtin_options_type": "SoftmaxOptions", 84*89c4ff92SAndroid Build Coastguard Worker "builtin_options": { 85*89c4ff92SAndroid Build Coastguard Worker "beta": 1.0 86*89c4ff92SAndroid Build Coastguard Worker }, 87*89c4ff92SAndroid Build Coastguard Worker "custom_options_format": "FLEXBUFFERS" 88*89c4ff92SAndroid Build Coastguard Worker }, 89*89c4ff92SAndroid Build Coastguard Worker { 90*89c4ff92SAndroid Build Coastguard Worker "opcode_index": 0, 91*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 92*89c4ff92SAndroid Build Coastguard Worker 0 93*89c4ff92SAndroid Build Coastguard Worker ], 94*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 95*89c4ff92SAndroid Build Coastguard Worker 2 96*89c4ff92SAndroid Build Coastguard Worker ], 97*89c4ff92SAndroid Build Coastguard Worker "builtin_options_type": "Pool2DOptions", 98*89c4ff92SAndroid Build Coastguard Worker "builtin_options": { 99*89c4ff92SAndroid Build Coastguard Worker "padding": "VALID", 100*89c4ff92SAndroid Build Coastguard Worker "stride_w": 2, 101*89c4ff92SAndroid Build Coastguard Worker "stride_h": 2, 102*89c4ff92SAndroid Build Coastguard Worker "filter_width": 2, 103*89c4ff92SAndroid Build Coastguard Worker "filter_height": 2, 104*89c4ff92SAndroid Build Coastguard Worker "fused_activation_function": "NONE" 105*89c4ff92SAndroid Build Coastguard Worker }, 106*89c4ff92SAndroid Build Coastguard Worker "custom_options_format": "FLEXBUFFERS" 107*89c4ff92SAndroid Build Coastguard Worker } 108*89c4ff92SAndroid Build Coastguard Worker ], 109*89c4ff92SAndroid Build Coastguard Worker "name": "main" 110*89c4ff92SAndroid Build Coastguard Worker } 111*89c4ff92SAndroid Build Coastguard Worker ], 112*89c4ff92SAndroid Build Coastguard Worker "description": "MLIR Converted.", 113*89c4ff92SAndroid Build Coastguard Worker "buffers": [ 114*89c4ff92SAndroid Build Coastguard Worker { 115*89c4ff92SAndroid Build Coastguard Worker }, 116*89c4ff92SAndroid Build Coastguard Worker { 117*89c4ff92SAndroid Build Coastguard Worker }, 118*89c4ff92SAndroid Build Coastguard Worker { 119*89c4ff92SAndroid Build Coastguard Worker }, 120*89c4ff92SAndroid Build Coastguard Worker { 121*89c4ff92SAndroid Build Coastguard Worker } 122*89c4ff92SAndroid Build Coastguard Worker ] 123*89c4ff92SAndroid Build Coastguard Worker } 124*89c4ff92SAndroid Build Coastguard Worker )"; 125*89c4ff92SAndroid Build Coastguard Worker Setup(); 126*89c4ff92SAndroid Build Coastguard Worker } 127*89c4ff92SAndroid Build Coastguard Worker }; 128*89c4ff92SAndroid Build Coastguard Worker 129*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensor0Fixture : LoadScopeDynamicTensorFixture 130*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensor0FixtureLoadScopeDynamicTensor0Fixture131*89c4ff92SAndroid Build Coastguard Worker LoadScopeDynamicTensor0Fixture() : LoadScopeDynamicTensorFixture("[ 1, 2, 3, 2 ]", "[]", "[]") {} 132*89c4ff92SAndroid Build Coastguard Worker }; 133*89c4ff92SAndroid Build Coastguard Worker 134*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensor1Fixture : LoadScopeDynamicTensorFixture 135*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensor1FixtureLoadScopeDynamicTensor1Fixture136*89c4ff92SAndroid Build Coastguard Worker LoadScopeDynamicTensor1Fixture() : LoadScopeDynamicTensorFixture("[ 1, 2, 4, 1 ]", "[ 1, 1, 2, 1 ]", "[]") {} 137*89c4ff92SAndroid Build Coastguard Worker }; 138*89c4ff92SAndroid Build Coastguard Worker 139*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensor2Fixture : LoadScopeDynamicTensorFixture 140*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensor2FixtureLoadScopeDynamicTensor2Fixture141*89c4ff92SAndroid Build Coastguard Worker LoadScopeDynamicTensor2Fixture() : LoadScopeDynamicTensorFixture("[ 1, 3, 3, 2 ]", "[ ]", "[ 1, 1, 1, 2 ]") {} 142*89c4ff92SAndroid Build Coastguard Worker }; 143*89c4ff92SAndroid Build Coastguard Worker 144*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensor0Fixture, "LoadScopeDynamicTensor0") 145*89c4ff92SAndroid Build Coastguard Worker { 146*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>( 147*89c4ff92SAndroid Build Coastguard Worker 0, 148*89c4ff92SAndroid Build Coastguard Worker { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }} }, 149*89c4ff92SAndroid Build Coastguard Worker { {"output", { 0.26894143f, 0.7310586f }} }, 150*89c4ff92SAndroid Build Coastguard Worker true); 151*89c4ff92SAndroid Build Coastguard Worker } 152*89c4ff92SAndroid Build Coastguard Worker 153*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensor1Fixture, "LoadScopeDynamicTensor1") 154*89c4ff92SAndroid Build Coastguard Worker { 155*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>( 156*89c4ff92SAndroid Build Coastguard Worker 0, 157*89c4ff92SAndroid Build Coastguard Worker { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f }} }, 158*89c4ff92SAndroid Build Coastguard Worker { {"output", { 1.f, 1.f }} }, 159*89c4ff92SAndroid Build Coastguard Worker true); 160*89c4ff92SAndroid Build Coastguard Worker } 161*89c4ff92SAndroid Build Coastguard Worker 162*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensor2Fixture, "LoadScopeDynamicTensor2") 163*89c4ff92SAndroid Build Coastguard Worker { 164*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>( 165*89c4ff92SAndroid Build Coastguard Worker 0, 166*89c4ff92SAndroid Build Coastguard Worker { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f }} }, 167*89c4ff92SAndroid Build Coastguard Worker { {"output", { 0.7772999f, 0.22270015f }} }, 168*89c4ff92SAndroid Build Coastguard Worker true); 169*89c4ff92SAndroid Build Coastguard Worker } 170*89c4ff92SAndroid Build Coastguard Worker 171*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcastingFixture : public ParserFlatbuffersFixture 172*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensorBroadcastingFixtureLoadScopeDynamicTensorBroadcastingFixture173*89c4ff92SAndroid Build Coastguard Worker explicit LoadScopeDynamicTensorBroadcastingFixture(const std::string& inputShape0, 174*89c4ff92SAndroid Build Coastguard Worker const std::string& inputShape1, 175*89c4ff92SAndroid Build Coastguard Worker const std::string& inputShape2, 176*89c4ff92SAndroid Build Coastguard Worker const std::string& addShape, 177*89c4ff92SAndroid Build Coastguard Worker const std::string& outputShape) 178*89c4ff92SAndroid Build Coastguard Worker { 179*89c4ff92SAndroid Build Coastguard Worker m_JsonString = R"( 180*89c4ff92SAndroid Build Coastguard Worker { 181*89c4ff92SAndroid Build Coastguard Worker "version": 3, 182*89c4ff92SAndroid Build Coastguard Worker "operator_codes": [ 183*89c4ff92SAndroid Build Coastguard Worker { 184*89c4ff92SAndroid Build Coastguard Worker "builtin_code": "ADD", 185*89c4ff92SAndroid Build Coastguard Worker "version": 1 186*89c4ff92SAndroid Build Coastguard Worker }, 187*89c4ff92SAndroid Build Coastguard Worker { 188*89c4ff92SAndroid Build Coastguard Worker "builtin_code": "SUB", 189*89c4ff92SAndroid Build Coastguard Worker "version": 1 190*89c4ff92SAndroid Build Coastguard Worker } 191*89c4ff92SAndroid Build Coastguard Worker ], 192*89c4ff92SAndroid Build Coastguard Worker "subgraphs": [ 193*89c4ff92SAndroid Build Coastguard Worker { 194*89c4ff92SAndroid Build Coastguard Worker "tensors": [ 195*89c4ff92SAndroid Build Coastguard Worker { 196*89c4ff92SAndroid Build Coastguard Worker "shape": )" + inputShape0 + R"(, 197*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 198*89c4ff92SAndroid Build Coastguard Worker "buffer": 1, 199*89c4ff92SAndroid Build Coastguard Worker "name": "input0", 200*89c4ff92SAndroid Build Coastguard Worker "quantization": { 201*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 202*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 203*89c4ff92SAndroid Build Coastguard Worker }, 204*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 205*89c4ff92SAndroid Build Coastguard Worker }, 206*89c4ff92SAndroid Build Coastguard Worker { 207*89c4ff92SAndroid Build Coastguard Worker "shape": )" + inputShape1 + R"(, 208*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 209*89c4ff92SAndroid Build Coastguard Worker "buffer": 2, 210*89c4ff92SAndroid Build Coastguard Worker "name": "input1", 211*89c4ff92SAndroid Build Coastguard Worker "quantization": { 212*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 213*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 214*89c4ff92SAndroid Build Coastguard Worker }, 215*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 216*89c4ff92SAndroid Build Coastguard Worker }, 217*89c4ff92SAndroid Build Coastguard Worker { 218*89c4ff92SAndroid Build Coastguard Worker "shape": )" + outputShape + R"(, 219*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 220*89c4ff92SAndroid Build Coastguard Worker "buffer": 5, 221*89c4ff92SAndroid Build Coastguard Worker "name": "output", 222*89c4ff92SAndroid Build Coastguard Worker "quantization": { 223*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 224*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 225*89c4ff92SAndroid Build Coastguard Worker }, 226*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 227*89c4ff92SAndroid Build Coastguard Worker }, 228*89c4ff92SAndroid Build Coastguard Worker 229*89c4ff92SAndroid Build Coastguard Worker { 230*89c4ff92SAndroid Build Coastguard Worker "shape": )" + addShape + R"(, 231*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 232*89c4ff92SAndroid Build Coastguard Worker "buffer": 4, 233*89c4ff92SAndroid Build Coastguard Worker "name": "model/add/add", 234*89c4ff92SAndroid Build Coastguard Worker "quantization": { 235*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 236*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 237*89c4ff92SAndroid Build Coastguard Worker }, 238*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 239*89c4ff92SAndroid Build Coastguard Worker }, 240*89c4ff92SAndroid Build Coastguard Worker { 241*89c4ff92SAndroid Build Coastguard Worker "shape": )" + inputShape2 + R"(, 242*89c4ff92SAndroid Build Coastguard Worker "type": "FLOAT32", 243*89c4ff92SAndroid Build Coastguard Worker "buffer": 3, 244*89c4ff92SAndroid Build Coastguard Worker "name": "input2", 245*89c4ff92SAndroid Build Coastguard Worker "quantization": { 246*89c4ff92SAndroid Build Coastguard Worker "details_type": 0, 247*89c4ff92SAndroid Build Coastguard Worker "quantized_dimension": 0 248*89c4ff92SAndroid Build Coastguard Worker }, 249*89c4ff92SAndroid Build Coastguard Worker "is_variable": false 250*89c4ff92SAndroid Build Coastguard Worker }, 251*89c4ff92SAndroid Build Coastguard Worker ], 252*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 253*89c4ff92SAndroid Build Coastguard Worker 0, 254*89c4ff92SAndroid Build Coastguard Worker 1, 255*89c4ff92SAndroid Build Coastguard Worker 4 256*89c4ff92SAndroid Build Coastguard Worker ], 257*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 258*89c4ff92SAndroid Build Coastguard Worker 2 259*89c4ff92SAndroid Build Coastguard Worker ], 260*89c4ff92SAndroid Build Coastguard Worker "operators": [ 261*89c4ff92SAndroid Build Coastguard Worker { 262*89c4ff92SAndroid Build Coastguard Worker "opcode_index": 0, 263*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 264*89c4ff92SAndroid Build Coastguard Worker 0, 265*89c4ff92SAndroid Build Coastguard Worker 1 266*89c4ff92SAndroid Build Coastguard Worker ], 267*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 268*89c4ff92SAndroid Build Coastguard Worker 3 269*89c4ff92SAndroid Build Coastguard Worker ], 270*89c4ff92SAndroid Build Coastguard Worker "builtin_options_type": "AddOptions", 271*89c4ff92SAndroid Build Coastguard Worker "builtin_options": { 272*89c4ff92SAndroid Build Coastguard Worker "fused_activation_function": "NONE" 273*89c4ff92SAndroid Build Coastguard Worker }, 274*89c4ff92SAndroid Build Coastguard Worker "custom_options_format": "FLEXBUFFERS" 275*89c4ff92SAndroid Build Coastguard Worker }, 276*89c4ff92SAndroid Build Coastguard Worker { 277*89c4ff92SAndroid Build Coastguard Worker "opcode_index": 1, 278*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 279*89c4ff92SAndroid Build Coastguard Worker 3, 280*89c4ff92SAndroid Build Coastguard Worker 4 281*89c4ff92SAndroid Build Coastguard Worker ], 282*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 283*89c4ff92SAndroid Build Coastguard Worker 2 284*89c4ff92SAndroid Build Coastguard Worker ], 285*89c4ff92SAndroid Build Coastguard Worker "builtin_options_type": "SubOptions", 286*89c4ff92SAndroid Build Coastguard Worker "builtin_options": { 287*89c4ff92SAndroid Build Coastguard Worker "fused_activation_function": "NONE" 288*89c4ff92SAndroid Build Coastguard Worker }, 289*89c4ff92SAndroid Build Coastguard Worker "custom_options_format": "FLEXBUFFERS" 290*89c4ff92SAndroid Build Coastguard Worker } 291*89c4ff92SAndroid Build Coastguard Worker ], 292*89c4ff92SAndroid Build Coastguard Worker "name": "main" 293*89c4ff92SAndroid Build Coastguard Worker } 294*89c4ff92SAndroid Build Coastguard Worker ], 295*89c4ff92SAndroid Build Coastguard Worker "buffers": [ 296*89c4ff92SAndroid Build Coastguard Worker { 297*89c4ff92SAndroid Build Coastguard Worker }, 298*89c4ff92SAndroid Build Coastguard Worker { 299*89c4ff92SAndroid Build Coastguard Worker }, 300*89c4ff92SAndroid Build Coastguard Worker { 301*89c4ff92SAndroid Build Coastguard Worker }, 302*89c4ff92SAndroid Build Coastguard Worker { 303*89c4ff92SAndroid Build Coastguard Worker }, 304*89c4ff92SAndroid Build Coastguard Worker { 305*89c4ff92SAndroid Build Coastguard Worker }, 306*89c4ff92SAndroid Build Coastguard Worker { 307*89c4ff92SAndroid Build Coastguard Worker } 308*89c4ff92SAndroid Build Coastguard Worker ] 309*89c4ff92SAndroid Build Coastguard Worker } 310*89c4ff92SAndroid Build Coastguard Worker )"; 311*89c4ff92SAndroid Build Coastguard Worker Setup(); 312*89c4ff92SAndroid Build Coastguard Worker } 313*89c4ff92SAndroid Build Coastguard Worker }; 314*89c4ff92SAndroid Build Coastguard Worker 315*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcasting3DFixture : LoadScopeDynamicTensorBroadcastingFixture 316*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensorBroadcasting3DFixtureLoadScopeDynamicTensorBroadcasting3DFixture317*89c4ff92SAndroid Build Coastguard Worker LoadScopeDynamicTensorBroadcasting3DFixture() : LoadScopeDynamicTensorBroadcastingFixture("[ 1, 2, 3, 2 ]", 318*89c4ff92SAndroid Build Coastguard Worker "[ 2, 3, 2 ]", 319*89c4ff92SAndroid Build Coastguard Worker "[ 2, 3, 2 ]", 320*89c4ff92SAndroid Build Coastguard Worker "[ 1, 2, 3, 2 ]", "[]") {} 321*89c4ff92SAndroid Build Coastguard Worker }; 322*89c4ff92SAndroid Build Coastguard Worker 323*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcasting2DFixture : LoadScopeDynamicTensorBroadcastingFixture 324*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensorBroadcasting2DFixtureLoadScopeDynamicTensorBroadcasting2DFixture325*89c4ff92SAndroid Build Coastguard Worker LoadScopeDynamicTensorBroadcasting2DFixture() : LoadScopeDynamicTensorBroadcastingFixture("[ 1, 2, 3, 2 ]", 326*89c4ff92SAndroid Build Coastguard Worker "[ 3, 2 ]", 327*89c4ff92SAndroid Build Coastguard Worker "[ 3, 2 ]", 328*89c4ff92SAndroid Build Coastguard Worker "[]", "[]") {} 329*89c4ff92SAndroid Build Coastguard Worker }; 330*89c4ff92SAndroid Build Coastguard Worker 331*89c4ff92SAndroid Build Coastguard Worker struct LoadScopeDynamicTensorBroadcasting1DFixture : LoadScopeDynamicTensorBroadcastingFixture 332*89c4ff92SAndroid Build Coastguard Worker { LoadScopeDynamicTensorBroadcasting1DFixtureLoadScopeDynamicTensorBroadcasting1DFixture333*89c4ff92SAndroid Build Coastguard Worker LoadScopeDynamicTensorBroadcasting1DFixture() : LoadScopeDynamicTensorBroadcastingFixture("[ 1, 2, 3, 2 ]", 334*89c4ff92SAndroid Build Coastguard Worker "[ 1 ]", 335*89c4ff92SAndroid Build Coastguard Worker "[ 1 ]", 336*89c4ff92SAndroid Build Coastguard Worker "[]", 337*89c4ff92SAndroid Build Coastguard Worker "[ 1, 2, 3, 2 ]") {} 338*89c4ff92SAndroid Build Coastguard Worker }; 339*89c4ff92SAndroid Build Coastguard Worker 340*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensorBroadcasting3DFixture, "LoadScopeDynamicTensorBroadcasting3D") 341*89c4ff92SAndroid Build Coastguard Worker { 342*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>( 343*89c4ff92SAndroid Build Coastguard Worker 0, 344*89c4ff92SAndroid Build Coastguard Worker { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }}, 345*89c4ff92SAndroid Build Coastguard Worker {"input1", { 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f }}, 346*89c4ff92SAndroid Build Coastguard Worker {"input2", { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f }} 347*89c4ff92SAndroid Build Coastguard Worker }, 348*89c4ff92SAndroid Build Coastguard Worker { {"output", { 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f }} }, 349*89c4ff92SAndroid Build Coastguard Worker true); 350*89c4ff92SAndroid Build Coastguard Worker } 351*89c4ff92SAndroid Build Coastguard Worker 352*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensorBroadcasting2DFixture, "LoadScopeDynamicTensorBroadcasting2D") 353*89c4ff92SAndroid Build Coastguard Worker { 354*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>( 355*89c4ff92SAndroid Build Coastguard Worker 0, 356*89c4ff92SAndroid Build Coastguard Worker { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }}, 357*89c4ff92SAndroid Build Coastguard Worker {"input1", { 3.f, 4.f, 5.f, 6.f, 7.f, 8.f }}, 358*89c4ff92SAndroid Build Coastguard Worker {"input2", { -1.f, -2.f, 3.f, 4.f, 5.f, 6.f }} 359*89c4ff92SAndroid Build Coastguard Worker }, 360*89c4ff92SAndroid Build Coastguard Worker { {"output", { 4.f, 7.f, 4.f, 5.f, 6.f, 7.f, 10.f, 13.f, 10.f, 11.f, 12.f, 13.f }} }, 361*89c4ff92SAndroid Build Coastguard Worker true); 362*89c4ff92SAndroid Build Coastguard Worker } 363*89c4ff92SAndroid Build Coastguard Worker 364*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(LoadScopeDynamicTensorBroadcasting1DFixture, "LoadScopeDynamicTensorBroadcasting1D") 365*89c4ff92SAndroid Build Coastguard Worker { 366*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::Float32, armnn::DataType::Float32>( 367*89c4ff92SAndroid Build Coastguard Worker 0, 368*89c4ff92SAndroid Build Coastguard Worker { {"input0", { 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f }}, 369*89c4ff92SAndroid Build Coastguard Worker {"input1", { 5.f }}, 370*89c4ff92SAndroid Build Coastguard Worker {"input2", { 1.f }} 371*89c4ff92SAndroid Build Coastguard Worker }, 372*89c4ff92SAndroid Build Coastguard Worker { {"output", { 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f, 15.f }} }, 373*89c4ff92SAndroid Build Coastguard Worker true); 374*89c4ff92SAndroid Build Coastguard Worker } 375*89c4ff92SAndroid Build Coastguard Worker 376*89c4ff92SAndroid Build Coastguard Worker } 377