xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/test/DeserializeSlice.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2019 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 
8*89c4ff92SAndroid Build Coastguard Worker #include <armnnDeserializer/IDeserializer.hpp>
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker #include <string>
11*89c4ff92SAndroid Build Coastguard Worker 
12*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Deserializer_Slice")
13*89c4ff92SAndroid Build Coastguard Worker {
14*89c4ff92SAndroid Build Coastguard Worker struct SliceFixture : public ParserFlatbuffersSerializeFixture
15*89c4ff92SAndroid Build Coastguard Worker {
SliceFixtureSliceFixture16*89c4ff92SAndroid Build Coastguard Worker     explicit SliceFixture(const std::string& inputShape,
17*89c4ff92SAndroid Build Coastguard Worker                           const std::string& outputShape,
18*89c4ff92SAndroid Build Coastguard Worker                           const std::string& begin,
19*89c4ff92SAndroid Build Coastguard Worker                           const std::string& size,
20*89c4ff92SAndroid Build Coastguard Worker                           const std::string& dataType)
21*89c4ff92SAndroid Build Coastguard Worker     {
22*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
23*89c4ff92SAndroid Build Coastguard Worker             {
24*89c4ff92SAndroid Build Coastguard Worker                 inputIds: [0],
25*89c4ff92SAndroid Build Coastguard Worker                 outputIds: [2],
26*89c4ff92SAndroid Build Coastguard Worker                 layers: [
27*89c4ff92SAndroid Build Coastguard Worker                     {
28*89c4ff92SAndroid Build Coastguard Worker                         layer_type: "InputLayer",
29*89c4ff92SAndroid Build Coastguard Worker                         layer: {
30*89c4ff92SAndroid Build Coastguard Worker                             base: {
31*89c4ff92SAndroid Build Coastguard Worker                                 layerBindingId: 0,
32*89c4ff92SAndroid Build Coastguard Worker                                 base: {
33*89c4ff92SAndroid Build Coastguard Worker                                     index: 0,
34*89c4ff92SAndroid Build Coastguard Worker                                     layerName: "InputLayer",
35*89c4ff92SAndroid Build Coastguard Worker                                     layerType: "Input",
36*89c4ff92SAndroid Build Coastguard Worker                                     inputSlots: [{
37*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
38*89c4ff92SAndroid Build Coastguard Worker                                         connection: {sourceLayerIndex:0, outputSlotIndex:0 },
39*89c4ff92SAndroid Build Coastguard Worker                                     }],
40*89c4ff92SAndroid Build Coastguard Worker                                     outputSlots: [{
41*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
42*89c4ff92SAndroid Build Coastguard Worker                                         tensorInfo: {
43*89c4ff92SAndroid Build Coastguard Worker                                             dimensions: )" + inputShape + R"(,
44*89c4ff92SAndroid Build Coastguard Worker                                             dataType: )" + dataType + R"(
45*89c4ff92SAndroid Build Coastguard Worker                                         }
46*89c4ff92SAndroid Build Coastguard Worker                                     }]
47*89c4ff92SAndroid Build Coastguard Worker                                 }
48*89c4ff92SAndroid Build Coastguard Worker                             }
49*89c4ff92SAndroid Build Coastguard Worker                         }
50*89c4ff92SAndroid Build Coastguard Worker                     },
51*89c4ff92SAndroid Build Coastguard Worker                     {
52*89c4ff92SAndroid Build Coastguard Worker                         layer_type: "SliceLayer",
53*89c4ff92SAndroid Build Coastguard Worker                         layer: {
54*89c4ff92SAndroid Build Coastguard Worker                             base: {
55*89c4ff92SAndroid Build Coastguard Worker                                 index: 1,
56*89c4ff92SAndroid Build Coastguard Worker                                 layerName: "SliceLayer",
57*89c4ff92SAndroid Build Coastguard Worker                                 layerType: "Slice",
58*89c4ff92SAndroid Build Coastguard Worker                                 inputSlots: [{
59*89c4ff92SAndroid Build Coastguard Worker                                     index: 0,
60*89c4ff92SAndroid Build Coastguard Worker                                     connection: {sourceLayerIndex:0, outputSlotIndex:0 },
61*89c4ff92SAndroid Build Coastguard Worker                                 }],
62*89c4ff92SAndroid Build Coastguard Worker                                 outputSlots: [{
63*89c4ff92SAndroid Build Coastguard Worker                                     index: 0,
64*89c4ff92SAndroid Build Coastguard Worker                                     tensorInfo: {
65*89c4ff92SAndroid Build Coastguard Worker                                         dimensions: )" + outputShape + R"(,
66*89c4ff92SAndroid Build Coastguard Worker                                         dataType: )" + dataType + R"(
67*89c4ff92SAndroid Build Coastguard Worker                                     }
68*89c4ff92SAndroid Build Coastguard Worker                                 }]
69*89c4ff92SAndroid Build Coastguard Worker                             },
70*89c4ff92SAndroid Build Coastguard Worker                             descriptor: {
71*89c4ff92SAndroid Build Coastguard Worker                                 begin: )" + begin + R"(,
72*89c4ff92SAndroid Build Coastguard Worker                                 size: )" + size + R"(,
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                         layer_type: "OutputLayer",
78*89c4ff92SAndroid Build Coastguard Worker                         layer: {
79*89c4ff92SAndroid Build Coastguard Worker                             base:{
80*89c4ff92SAndroid Build Coastguard Worker                                 layerBindingId: 2,
81*89c4ff92SAndroid Build Coastguard Worker                                 base: {
82*89c4ff92SAndroid Build Coastguard Worker                                     index: 2,
83*89c4ff92SAndroid Build Coastguard Worker                                     layerName: "OutputLayer",
84*89c4ff92SAndroid Build Coastguard Worker                                     layerType: "Output",
85*89c4ff92SAndroid Build Coastguard Worker                                     inputSlots: [{
86*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
87*89c4ff92SAndroid Build Coastguard Worker                                         connection: {sourceLayerIndex:1, outputSlotIndex:0 },
88*89c4ff92SAndroid Build Coastguard Worker                                     }],
89*89c4ff92SAndroid Build Coastguard Worker                                     outputSlots: [{
90*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
91*89c4ff92SAndroid Build Coastguard Worker                                         tensorInfo: {
92*89c4ff92SAndroid Build Coastguard Worker                                             dimensions: )" + outputShape + R"(,
93*89c4ff92SAndroid Build Coastguard Worker                                             dataType: )" + dataType + R"(
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                         },
99*89c4ff92SAndroid Build Coastguard Worker                     }
100*89c4ff92SAndroid Build Coastguard Worker                 ]
101*89c4ff92SAndroid Build Coastguard Worker             }
102*89c4ff92SAndroid Build Coastguard Worker         )";
103*89c4ff92SAndroid Build Coastguard Worker         SetupSingleInputSingleOutput("InputLayer", "OutputLayer");
104*89c4ff92SAndroid Build Coastguard Worker     }
105*89c4ff92SAndroid Build Coastguard Worker };
106*89c4ff92SAndroid Build Coastguard Worker 
107*89c4ff92SAndroid Build Coastguard Worker struct SimpleSliceFixture : SliceFixture
108*89c4ff92SAndroid Build Coastguard Worker {
SimpleSliceFixtureSimpleSliceFixture109*89c4ff92SAndroid Build Coastguard Worker     SimpleSliceFixture() : SliceFixture("[ 3, 2, 3, 5 ]", // input shape
110*89c4ff92SAndroid Build Coastguard Worker                                         "[ 2, 1, 2, 3 ]", // output shape
111*89c4ff92SAndroid Build Coastguard Worker                                         "[ 1, 0, 1, 2 ]", // begin
112*89c4ff92SAndroid Build Coastguard Worker                                         "[ 2, 1, 2, 3 ]", // size
113*89c4ff92SAndroid Build Coastguard Worker                                         "Float32") {}     // data type
114*89c4ff92SAndroid Build Coastguard Worker };
115*89c4ff92SAndroid Build Coastguard Worker 
116*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleSliceFixture, "SimpleSliceFloat32")
117*89c4ff92SAndroid Build Coastguard Worker {
118*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::Float32>(
119*89c4ff92SAndroid Build Coastguard Worker         0,
120*89c4ff92SAndroid Build Coastguard Worker         {
121*89c4ff92SAndroid Build Coastguard Worker             0.f,  1.f,  2.f,  3.f,  4.f,
122*89c4ff92SAndroid Build Coastguard Worker             5.f,  6.f,  7.f,  8.f,  9.f,
123*89c4ff92SAndroid Build Coastguard Worker             10.f, 11.f, 12.f, 13.f, 14.f,
124*89c4ff92SAndroid Build Coastguard Worker 
125*89c4ff92SAndroid Build Coastguard Worker             15.f, 16.f, 17.f, 18.f, 19.f,
126*89c4ff92SAndroid Build Coastguard Worker             20.f, 21.f, 22.f, 23.f, 24.f,
127*89c4ff92SAndroid Build Coastguard Worker             25.f, 26.f, 27.f, 28.f, 29.f,
128*89c4ff92SAndroid Build Coastguard Worker 
129*89c4ff92SAndroid Build Coastguard Worker 
130*89c4ff92SAndroid Build Coastguard Worker             30.f, 31.f, 32.f, 33.f, 34.f,
131*89c4ff92SAndroid Build Coastguard Worker             35.f, 36.f, 37.f, 38.f, 39.f,
132*89c4ff92SAndroid Build Coastguard Worker             40.f, 41.f, 42.f, 43.f, 44.f,
133*89c4ff92SAndroid Build Coastguard Worker 
134*89c4ff92SAndroid Build Coastguard Worker             45.f, 46.f, 47.f, 48.f, 49.f,
135*89c4ff92SAndroid Build Coastguard Worker             50.f, 51.f, 52.f, 53.f, 54.f,
136*89c4ff92SAndroid Build Coastguard Worker             55.f, 56.f, 57.f, 58.f, 59.f,
137*89c4ff92SAndroid Build Coastguard Worker 
138*89c4ff92SAndroid Build Coastguard Worker 
139*89c4ff92SAndroid Build Coastguard Worker             60.f, 61.f, 62.f, 63.f, 64.f,
140*89c4ff92SAndroid Build Coastguard Worker             65.f, 66.f, 67.f, 68.f, 69.f,
141*89c4ff92SAndroid Build Coastguard Worker             70.f, 71.f, 72.f, 73.f, 74.f,
142*89c4ff92SAndroid Build Coastguard Worker 
143*89c4ff92SAndroid Build Coastguard Worker             75.f, 76.f, 77.f, 78.f, 79.f,
144*89c4ff92SAndroid Build Coastguard Worker             80.f, 81.f, 82.f, 83.f, 84.f,
145*89c4ff92SAndroid Build Coastguard Worker             85.f, 86.f, 87.f, 88.f, 89.f
146*89c4ff92SAndroid Build Coastguard Worker         },
147*89c4ff92SAndroid Build Coastguard Worker         {
148*89c4ff92SAndroid Build Coastguard Worker             37.f, 38.f, 39.f,
149*89c4ff92SAndroid Build Coastguard Worker             42.f, 43.f, 44.f,
150*89c4ff92SAndroid Build Coastguard Worker 
151*89c4ff92SAndroid Build Coastguard Worker             67.f, 68.f, 69.f,
152*89c4ff92SAndroid Build Coastguard Worker             72.f, 73.f, 74.f
153*89c4ff92SAndroid Build Coastguard Worker         });
154*89c4ff92SAndroid Build Coastguard Worker }
155*89c4ff92SAndroid Build Coastguard Worker 
156*89c4ff92SAndroid Build Coastguard Worker }
157