1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd. 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 "ParserFlatbuffersSerializeFixture.hpp" 7*89c4ff92SAndroid Build Coastguard Worker #include <armnnDeserializer/IDeserializer.hpp> 8*89c4ff92SAndroid Build Coastguard Worker 9*89c4ff92SAndroid Build Coastguard Worker #include <string> 10*89c4ff92SAndroid Build Coastguard Worker 11*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Deserializer_Reshape") 12*89c4ff92SAndroid Build Coastguard Worker { 13*89c4ff92SAndroid Build Coastguard Worker struct ReshapeFixture : public ParserFlatbuffersSerializeFixture 14*89c4ff92SAndroid Build Coastguard Worker { ReshapeFixtureReshapeFixture15*89c4ff92SAndroid Build Coastguard Worker explicit ReshapeFixture(const std::string &inputShape, 16*89c4ff92SAndroid Build Coastguard Worker const std::string &targetShape, 17*89c4ff92SAndroid Build Coastguard Worker const std::string &outputShape, 18*89c4ff92SAndroid Build Coastguard Worker const std::string &dataType) 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker m_JsonString = R"( 21*89c4ff92SAndroid Build Coastguard Worker { 22*89c4ff92SAndroid Build Coastguard Worker inputIds: [0], 23*89c4ff92SAndroid Build Coastguard Worker outputIds: [2], 24*89c4ff92SAndroid Build Coastguard Worker layers: [ 25*89c4ff92SAndroid Build Coastguard Worker { 26*89c4ff92SAndroid Build Coastguard Worker layer_type: "InputLayer", 27*89c4ff92SAndroid Build Coastguard Worker layer: { 28*89c4ff92SAndroid Build Coastguard Worker base: { 29*89c4ff92SAndroid Build Coastguard Worker layerBindingId: 0, 30*89c4ff92SAndroid Build Coastguard Worker base: { 31*89c4ff92SAndroid Build Coastguard Worker index: 0, 32*89c4ff92SAndroid Build Coastguard Worker layerName: "InputLayer", 33*89c4ff92SAndroid Build Coastguard Worker layerType: "Input", 34*89c4ff92SAndroid Build Coastguard Worker inputSlots: [{ 35*89c4ff92SAndroid Build Coastguard Worker index: 0, 36*89c4ff92SAndroid Build Coastguard Worker connection: {sourceLayerIndex:0, outputSlotIndex:0 }, 37*89c4ff92SAndroid Build Coastguard Worker }], 38*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ { 39*89c4ff92SAndroid Build Coastguard Worker index: 0, 40*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 41*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + inputShape + R"(, 42*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"( 43*89c4ff92SAndroid Build Coastguard Worker }}] 44*89c4ff92SAndroid Build Coastguard Worker } 45*89c4ff92SAndroid Build Coastguard Worker }}}, 46*89c4ff92SAndroid Build Coastguard Worker { 47*89c4ff92SAndroid Build Coastguard Worker layer_type: "ReshapeLayer", 48*89c4ff92SAndroid Build Coastguard Worker layer: { 49*89c4ff92SAndroid Build Coastguard Worker base: { 50*89c4ff92SAndroid Build Coastguard Worker index: 1, 51*89c4ff92SAndroid Build Coastguard Worker layerName: "ReshapeLayer", 52*89c4ff92SAndroid Build Coastguard Worker layerType: "Reshape", 53*89c4ff92SAndroid Build Coastguard Worker inputSlots: [{ 54*89c4ff92SAndroid Build Coastguard Worker index: 0, 55*89c4ff92SAndroid Build Coastguard Worker connection: {sourceLayerIndex:0, outputSlotIndex:0 }, 56*89c4ff92SAndroid Build Coastguard Worker }], 57*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ { 58*89c4ff92SAndroid Build Coastguard Worker index: 0, 59*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 60*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + inputShape + R"(, 61*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"( 62*89c4ff92SAndroid Build Coastguard Worker 63*89c4ff92SAndroid Build Coastguard Worker }}]}, 64*89c4ff92SAndroid Build Coastguard Worker descriptor: { 65*89c4ff92SAndroid Build Coastguard Worker targetShape: )" + targetShape + R"(, 66*89c4ff92SAndroid Build Coastguard Worker } 67*89c4ff92SAndroid Build Coastguard Worker 68*89c4ff92SAndroid Build Coastguard Worker }}, 69*89c4ff92SAndroid Build Coastguard Worker { 70*89c4ff92SAndroid Build Coastguard Worker layer_type: "OutputLayer", 71*89c4ff92SAndroid Build Coastguard Worker layer: { 72*89c4ff92SAndroid Build Coastguard Worker base:{ 73*89c4ff92SAndroid Build Coastguard Worker layerBindingId: 2, 74*89c4ff92SAndroid Build Coastguard Worker base: { 75*89c4ff92SAndroid Build Coastguard Worker index: 2, 76*89c4ff92SAndroid Build Coastguard Worker layerName: "OutputLayer", 77*89c4ff92SAndroid Build Coastguard Worker layerType: "Output", 78*89c4ff92SAndroid Build Coastguard Worker inputSlots: [{ 79*89c4ff92SAndroid Build Coastguard Worker index: 0, 80*89c4ff92SAndroid Build Coastguard Worker connection: {sourceLayerIndex:0, outputSlotIndex:0 }, 81*89c4ff92SAndroid Build Coastguard Worker }], 82*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ { 83*89c4ff92SAndroid Build Coastguard Worker index: 0, 84*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 85*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + outputShape + R"(, 86*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"( 87*89c4ff92SAndroid Build Coastguard Worker }, 88*89c4ff92SAndroid Build Coastguard Worker }], 89*89c4ff92SAndroid Build Coastguard Worker }}}, 90*89c4ff92SAndroid Build Coastguard Worker }] 91*89c4ff92SAndroid Build Coastguard Worker } 92*89c4ff92SAndroid Build Coastguard Worker )"; 93*89c4ff92SAndroid Build Coastguard Worker SetupSingleInputSingleOutput("InputLayer", "OutputLayer"); 94*89c4ff92SAndroid Build Coastguard Worker } 95*89c4ff92SAndroid Build Coastguard Worker }; 96*89c4ff92SAndroid Build Coastguard Worker 97*89c4ff92SAndroid Build Coastguard Worker struct SimpleReshapeFixture : ReshapeFixture 98*89c4ff92SAndroid Build Coastguard Worker { SimpleReshapeFixtureSimpleReshapeFixture99*89c4ff92SAndroid Build Coastguard Worker SimpleReshapeFixture() : ReshapeFixture("[ 1, 9 ]", "[ 3, 3 ]", "[ 3, 3 ]", 100*89c4ff92SAndroid Build Coastguard Worker "QuantisedAsymm8") {} 101*89c4ff92SAndroid Build Coastguard Worker }; 102*89c4ff92SAndroid Build Coastguard Worker 103*89c4ff92SAndroid Build Coastguard Worker struct SimpleReshapeFixture2 : ReshapeFixture 104*89c4ff92SAndroid Build Coastguard Worker { SimpleReshapeFixture2SimpleReshapeFixture2105*89c4ff92SAndroid Build Coastguard Worker SimpleReshapeFixture2() : ReshapeFixture("[ 2, 2, 1, 1 ]", 106*89c4ff92SAndroid Build Coastguard Worker "[ 2, 2, 1, 1 ]", 107*89c4ff92SAndroid Build Coastguard Worker "[ 2, 2, 1, 1 ]", 108*89c4ff92SAndroid Build Coastguard Worker "Float32") {} 109*89c4ff92SAndroid Build Coastguard Worker }; 110*89c4ff92SAndroid Build Coastguard Worker 111*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleReshapeFixture, "ReshapeQuantisedAsymm8") 112*89c4ff92SAndroid Build Coastguard Worker { 113*89c4ff92SAndroid Build Coastguard Worker RunTest<2, armnn::DataType::QAsymmU8>(0, 114*89c4ff92SAndroid Build Coastguard Worker { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, 115*89c4ff92SAndroid Build Coastguard Worker { 1, 2, 3, 4, 5, 6, 7, 8, 9 }); 116*89c4ff92SAndroid Build Coastguard Worker } 117*89c4ff92SAndroid Build Coastguard Worker 118*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleReshapeFixture2, "ReshapeFloat32") 119*89c4ff92SAndroid Build Coastguard Worker { 120*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::Float32>(0, 121*89c4ff92SAndroid Build Coastguard Worker { 111, 85, 226, 3 }, 122*89c4ff92SAndroid Build Coastguard Worker { 111, 85, 226, 3 }); 123*89c4ff92SAndroid Build Coastguard Worker } 124*89c4ff92SAndroid Build Coastguard Worker 125*89c4ff92SAndroid Build Coastguard Worker 126*89c4ff92SAndroid Build Coastguard Worker }