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 "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_Rank") 12*89c4ff92SAndroid Build Coastguard Worker { 13*89c4ff92SAndroid Build Coastguard Worker struct RankFixture : public ParserFlatbuffersSerializeFixture 14*89c4ff92SAndroid Build Coastguard Worker { RankFixtureRankFixture15*89c4ff92SAndroid Build Coastguard Worker explicit RankFixture(const std::string &inputShape, 16*89c4ff92SAndroid Build Coastguard Worker const std::string &dataType) 17*89c4ff92SAndroid Build Coastguard Worker { 18*89c4ff92SAndroid Build Coastguard Worker m_JsonString = R"( 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker inputIds: [0], 21*89c4ff92SAndroid Build Coastguard Worker outputIds: [2], 22*89c4ff92SAndroid Build Coastguard Worker layers: [ 23*89c4ff92SAndroid Build Coastguard Worker { 24*89c4ff92SAndroid Build Coastguard Worker layer_type: "InputLayer", 25*89c4ff92SAndroid Build Coastguard Worker layer: { 26*89c4ff92SAndroid Build Coastguard Worker base: { 27*89c4ff92SAndroid Build Coastguard Worker base: { 28*89c4ff92SAndroid Build Coastguard Worker layerName: "", 29*89c4ff92SAndroid Build Coastguard Worker layerType: "Input", 30*89c4ff92SAndroid Build Coastguard Worker inputSlots: [ 31*89c4ff92SAndroid Build Coastguard Worker 32*89c4ff92SAndroid Build Coastguard Worker ], 33*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ 34*89c4ff92SAndroid Build Coastguard Worker { 35*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 36*89c4ff92SAndroid Build Coastguard Worker dimensions: )" + inputShape + R"(, 37*89c4ff92SAndroid Build Coastguard Worker dataType: )" + dataType + R"(, 38*89c4ff92SAndroid Build Coastguard Worker quantizationScale: 0.0 39*89c4ff92SAndroid Build Coastguard Worker } 40*89c4ff92SAndroid Build Coastguard Worker } 41*89c4ff92SAndroid Build Coastguard Worker ] 42*89c4ff92SAndroid Build Coastguard Worker } 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: "RankLayer", 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: "rank", 52*89c4ff92SAndroid Build Coastguard Worker layerType: "Rank", 53*89c4ff92SAndroid Build Coastguard Worker inputSlots: [ 54*89c4ff92SAndroid Build Coastguard Worker { 55*89c4ff92SAndroid Build Coastguard Worker connection: { 56*89c4ff92SAndroid Build Coastguard Worker sourceLayerIndex: 0, 57*89c4ff92SAndroid Build Coastguard Worker outputSlotIndex: 0 58*89c4ff92SAndroid Build Coastguard Worker } 59*89c4ff92SAndroid Build Coastguard Worker } 60*89c4ff92SAndroid Build Coastguard Worker ], 61*89c4ff92SAndroid Build Coastguard Worker outputSlots: [ 62*89c4ff92SAndroid Build Coastguard Worker { 63*89c4ff92SAndroid Build Coastguard Worker tensorInfo: { 64*89c4ff92SAndroid Build Coastguard Worker dimensions: [ 1 ], 65*89c4ff92SAndroid Build Coastguard Worker dataType: "Signed32", 66*89c4ff92SAndroid Build Coastguard Worker quantizationScale: 0.0, 67*89c4ff92SAndroid Build Coastguard Worker dimensionality: 2 68*89c4ff92SAndroid Build Coastguard Worker } 69*89c4ff92SAndroid Build Coastguard Worker } 70*89c4ff92SAndroid Build Coastguard Worker ] 71*89c4ff92SAndroid Build Coastguard Worker } 72*89c4ff92SAndroid Build Coastguard Worker } 73*89c4ff92SAndroid Build Coastguard Worker }, 74*89c4ff92SAndroid Build Coastguard Worker { 75*89c4ff92SAndroid Build Coastguard Worker layer_type: "OutputLayer", 76*89c4ff92SAndroid Build Coastguard Worker layer: { 77*89c4ff92SAndroid Build Coastguard Worker base: { 78*89c4ff92SAndroid Build Coastguard Worker base: { 79*89c4ff92SAndroid Build Coastguard Worker index: 2, 80*89c4ff92SAndroid Build Coastguard Worker layerName: "", 81*89c4ff92SAndroid Build Coastguard Worker layerType: "Output", 82*89c4ff92SAndroid Build Coastguard Worker inputSlots: [ 83*89c4ff92SAndroid Build Coastguard Worker { 84*89c4ff92SAndroid Build Coastguard Worker connection: { 85*89c4ff92SAndroid Build Coastguard Worker sourceLayerIndex: 1, 86*89c4ff92SAndroid Build Coastguard Worker outputSlotIndex: 0 87*89c4ff92SAndroid Build Coastguard Worker } 88*89c4ff92SAndroid Build Coastguard Worker } 89*89c4ff92SAndroid Build Coastguard Worker ], 90*89c4ff92SAndroid Build Coastguard Worker outputSlots: [] 91*89c4ff92SAndroid Build Coastguard Worker } 92*89c4ff92SAndroid Build Coastguard Worker } 93*89c4ff92SAndroid Build Coastguard Worker } 94*89c4ff92SAndroid Build Coastguard Worker } 95*89c4ff92SAndroid Build Coastguard Worker ], 96*89c4ff92SAndroid Build Coastguard Worker } 97*89c4ff92SAndroid Build Coastguard Worker )"; 98*89c4ff92SAndroid Build Coastguard Worker Setup(); 99*89c4ff92SAndroid Build Coastguard Worker } 100*89c4ff92SAndroid Build Coastguard Worker }; 101*89c4ff92SAndroid Build Coastguard Worker 102*89c4ff92SAndroid Build Coastguard Worker struct SimpleRankDimSize1Fixture : RankFixture 103*89c4ff92SAndroid Build Coastguard Worker { SimpleRankDimSize1FixtureSimpleRankDimSize1Fixture104*89c4ff92SAndroid Build Coastguard Worker SimpleRankDimSize1Fixture() : RankFixture("[ 8 ]", "QSymmS16") {} 105*89c4ff92SAndroid Build Coastguard Worker }; 106*89c4ff92SAndroid Build Coastguard Worker 107*89c4ff92SAndroid Build Coastguard Worker struct SimpleRankDimSize2Fixture : RankFixture 108*89c4ff92SAndroid Build Coastguard Worker { SimpleRankDimSize2FixtureSimpleRankDimSize2Fixture109*89c4ff92SAndroid Build Coastguard Worker SimpleRankDimSize2Fixture() : RankFixture("[ 3, 3 ]", "QSymmS8") {} 110*89c4ff92SAndroid Build Coastguard Worker }; 111*89c4ff92SAndroid Build Coastguard Worker 112*89c4ff92SAndroid Build Coastguard Worker struct SimpleRankDimSize3Fixture : RankFixture 113*89c4ff92SAndroid Build Coastguard Worker { SimpleRankDimSize3FixtureSimpleRankDimSize3Fixture114*89c4ff92SAndroid Build Coastguard Worker SimpleRankDimSize3Fixture() : RankFixture("[ 2, 2, 1 ]", "Signed32") {} 115*89c4ff92SAndroid Build Coastguard Worker }; 116*89c4ff92SAndroid Build Coastguard Worker 117*89c4ff92SAndroid Build Coastguard Worker struct SimpleRankDimSize4Fixture : RankFixture 118*89c4ff92SAndroid Build Coastguard Worker { SimpleRankDimSize4FixtureSimpleRankDimSize4Fixture119*89c4ff92SAndroid Build Coastguard Worker SimpleRankDimSize4Fixture() : RankFixture("[ 2, 2, 1, 1 ]", "Float32") {} 120*89c4ff92SAndroid Build Coastguard Worker }; 121*89c4ff92SAndroid Build Coastguard Worker 122*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleRankDimSize1Fixture, "RankDimSize1Float16") 123*89c4ff92SAndroid Build Coastguard Worker { 124*89c4ff92SAndroid Build Coastguard Worker RunTest<1, armnn::DataType::QSymmS16, armnn::DataType::Signed32>( 0, 125*89c4ff92SAndroid Build Coastguard Worker { 1, 2, 3, 4, 5, 6, 7, 8 }, 126*89c4ff92SAndroid Build Coastguard Worker { 1 }); 127*89c4ff92SAndroid Build Coastguard Worker } 128*89c4ff92SAndroid Build Coastguard Worker 129*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleRankDimSize2Fixture, "RankDimSize2QAsymmU8") 130*89c4ff92SAndroid Build Coastguard Worker { 131*89c4ff92SAndroid Build Coastguard Worker RunTest<1, armnn::DataType::QSymmS8, armnn::DataType::Signed32>( 0, 132*89c4ff92SAndroid Build Coastguard Worker { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, 133*89c4ff92SAndroid Build Coastguard Worker { 2 }); 134*89c4ff92SAndroid Build Coastguard Worker } 135*89c4ff92SAndroid Build Coastguard Worker 136*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleRankDimSize3Fixture, "RankDimSize3Signed32") 137*89c4ff92SAndroid Build Coastguard Worker { 138*89c4ff92SAndroid Build Coastguard Worker RunTest<1, armnn::DataType::Signed32, armnn::DataType::Signed32>( 0, 139*89c4ff92SAndroid Build Coastguard Worker { 111, 85, 226, 3 }, 140*89c4ff92SAndroid Build Coastguard Worker { 3 }); 141*89c4ff92SAndroid Build Coastguard Worker } 142*89c4ff92SAndroid Build Coastguard Worker 143*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleRankDimSize4Fixture, "RankDimSize4Float32") 144*89c4ff92SAndroid Build Coastguard Worker { 145*89c4ff92SAndroid Build Coastguard Worker RunTest<1, armnn::DataType::Float32, armnn::DataType::Signed32>( 0, 146*89c4ff92SAndroid Build Coastguard Worker { 111, 85, 226, 3 }, 147*89c4ff92SAndroid Build Coastguard Worker { 4 }); 148*89c4ff92SAndroid Build Coastguard Worker } 149*89c4ff92SAndroid Build Coastguard Worker 150*89c4ff92SAndroid Build Coastguard Worker }