xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/test/DeserializePad.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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_Pad")
12*89c4ff92SAndroid Build Coastguard Worker {
13*89c4ff92SAndroid Build Coastguard Worker struct PadFixture : public ParserFlatbuffersSerializeFixture
14*89c4ff92SAndroid Build Coastguard Worker {
PadFixturePadFixture15*89c4ff92SAndroid Build Coastguard Worker     explicit PadFixture(const std::string& inputShape,
16*89c4ff92SAndroid Build Coastguard Worker                         const std::string& padList,
17*89c4ff92SAndroid Build Coastguard Worker                         const std::string& outputShape,
18*89c4ff92SAndroid Build Coastguard Worker                         const std::string& dataType,
19*89c4ff92SAndroid Build Coastguard Worker                         const std::string& paddingMode)
20*89c4ff92SAndroid Build Coastguard Worker     {
21*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
22*89c4ff92SAndroid Build Coastguard Worker             {
23*89c4ff92SAndroid Build Coastguard Worker                 inputIds: [0],
24*89c4ff92SAndroid Build Coastguard Worker                 outputIds: [2],
25*89c4ff92SAndroid Build Coastguard Worker                 layers: [
26*89c4ff92SAndroid Build Coastguard Worker                     {
27*89c4ff92SAndroid Build Coastguard Worker                         layer_type: "InputLayer",
28*89c4ff92SAndroid Build Coastguard Worker                         layer: {
29*89c4ff92SAndroid Build Coastguard Worker                             base: {
30*89c4ff92SAndroid Build Coastguard Worker                                 layerBindingId: 0,
31*89c4ff92SAndroid Build Coastguard Worker                                 base: {
32*89c4ff92SAndroid Build Coastguard Worker                                     index: 0,
33*89c4ff92SAndroid Build Coastguard Worker                                     layerName: "InputLayer",
34*89c4ff92SAndroid Build Coastguard Worker                                     layerType: "Input",
35*89c4ff92SAndroid Build Coastguard Worker                                     inputSlots: [{
36*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
37*89c4ff92SAndroid Build Coastguard Worker                                         connection: {sourceLayerIndex:0, outputSlotIndex:0 },
38*89c4ff92SAndroid Build Coastguard Worker                                     }],
39*89c4ff92SAndroid Build Coastguard Worker                                     outputSlots: [{
40*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
41*89c4ff92SAndroid Build Coastguard Worker                                         tensorInfo: {
42*89c4ff92SAndroid Build Coastguard Worker                                             dimensions: )" + inputShape + R"(,
43*89c4ff92SAndroid Build Coastguard Worker                                             dataType: )" + dataType + R"(
44*89c4ff92SAndroid Build Coastguard Worker                                         }
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                         layer_type: "PadLayer",
52*89c4ff92SAndroid Build Coastguard Worker                         layer: {
53*89c4ff92SAndroid Build Coastguard Worker                             base: {
54*89c4ff92SAndroid Build Coastguard Worker                                 index: 1,
55*89c4ff92SAndroid Build Coastguard Worker                                 layerName: "PadLayer",
56*89c4ff92SAndroid Build Coastguard Worker                                 layerType: "Pad",
57*89c4ff92SAndroid Build Coastguard Worker                                 inputSlots: [{
58*89c4ff92SAndroid Build Coastguard Worker                                     index: 0,
59*89c4ff92SAndroid Build Coastguard Worker                                     connection: {sourceLayerIndex:0, outputSlotIndex:0 },
60*89c4ff92SAndroid Build Coastguard Worker                                 }],
61*89c4ff92SAndroid Build Coastguard Worker                                 outputSlots: [{
62*89c4ff92SAndroid Build Coastguard Worker                                     index: 0,
63*89c4ff92SAndroid Build Coastguard Worker                                     tensorInfo: {
64*89c4ff92SAndroid Build Coastguard Worker                                         dimensions: )" + outputShape + R"(,
65*89c4ff92SAndroid Build Coastguard Worker                                         dataType: )" + dataType + R"(
66*89c4ff92SAndroid Build Coastguard Worker                                     }
67*89c4ff92SAndroid Build Coastguard Worker                                 }]
68*89c4ff92SAndroid Build Coastguard Worker                             },
69*89c4ff92SAndroid Build Coastguard Worker                             descriptor: {
70*89c4ff92SAndroid Build Coastguard Worker                                 padList: )" + padList + R"(,
71*89c4ff92SAndroid Build Coastguard Worker                                 paddingMode: )" + paddingMode + R"(,
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                         layer_type: "OutputLayer",
77*89c4ff92SAndroid Build Coastguard Worker                         layer: {
78*89c4ff92SAndroid Build Coastguard Worker                             base:{
79*89c4ff92SAndroid Build Coastguard Worker                                 layerBindingId: 2,
80*89c4ff92SAndroid Build Coastguard Worker                                 base: {
81*89c4ff92SAndroid Build Coastguard Worker                                     index: 2,
82*89c4ff92SAndroid Build Coastguard Worker                                     layerName: "OutputLayer",
83*89c4ff92SAndroid Build Coastguard Worker                                     layerType: "Output",
84*89c4ff92SAndroid Build Coastguard Worker                                     inputSlots: [{
85*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
86*89c4ff92SAndroid Build Coastguard Worker                                         connection: {sourceLayerIndex:1, outputSlotIndex:0 },
87*89c4ff92SAndroid Build Coastguard Worker                                     }],
88*89c4ff92SAndroid Build Coastguard Worker                                     outputSlots: [{
89*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
90*89c4ff92SAndroid Build Coastguard Worker                                         tensorInfo: {
91*89c4ff92SAndroid Build Coastguard Worker                                             dimensions: )" + outputShape + R"(,
92*89c4ff92SAndroid Build Coastguard Worker                                             dataType: )" + dataType + R"(
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                     }
99*89c4ff92SAndroid Build Coastguard Worker                 ]
100*89c4ff92SAndroid Build Coastguard Worker             }
101*89c4ff92SAndroid Build Coastguard Worker         )";
102*89c4ff92SAndroid Build Coastguard Worker         SetupSingleInputSingleOutput("InputLayer", "OutputLayer");
103*89c4ff92SAndroid Build Coastguard Worker     }
104*89c4ff92SAndroid Build Coastguard Worker };
105*89c4ff92SAndroid Build Coastguard Worker 
106*89c4ff92SAndroid Build Coastguard Worker struct SimplePadFixture : PadFixture
107*89c4ff92SAndroid Build Coastguard Worker {
SimplePadFixtureSimplePadFixture108*89c4ff92SAndroid Build Coastguard Worker     SimplePadFixture() : PadFixture("[ 2, 2, 2 ]",
109*89c4ff92SAndroid Build Coastguard Worker                                     "[ 0, 1, 2, 1, 2, 2 ]",
110*89c4ff92SAndroid Build Coastguard Worker                                     "[ 3, 5, 6 ]",
111*89c4ff92SAndroid Build Coastguard Worker                                     "QuantisedAsymm8",
112*89c4ff92SAndroid Build Coastguard Worker                                     "Constant") {}
113*89c4ff92SAndroid Build Coastguard Worker };
114*89c4ff92SAndroid Build Coastguard Worker 
115*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimplePadFixture, "SimplePadQuantisedAsymm8")
116*89c4ff92SAndroid Build Coastguard Worker {
117*89c4ff92SAndroid Build Coastguard Worker     RunTest<3, armnn::DataType::QAsymmU8>(0,
118*89c4ff92SAndroid Build Coastguard Worker                                          {
119*89c4ff92SAndroid Build Coastguard Worker                                             0, 4, 2, 5, 6, 1, 5, 2
120*89c4ff92SAndroid Build Coastguard Worker                                          },
121*89c4ff92SAndroid Build Coastguard Worker                                          {
122*89c4ff92SAndroid Build Coastguard Worker                                             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
123*89c4ff92SAndroid Build Coastguard Worker                                             4, 0, 0, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0,
124*89c4ff92SAndroid Build Coastguard Worker                                             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
125*89c4ff92SAndroid Build Coastguard Worker                                             1, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0,
126*89c4ff92SAndroid Build Coastguard Worker                                             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
127*89c4ff92SAndroid Build Coastguard Worker                                             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
128*89c4ff92SAndroid Build Coastguard Worker                                          });
129*89c4ff92SAndroid Build Coastguard Worker }
130*89c4ff92SAndroid Build Coastguard Worker 
131*89c4ff92SAndroid Build Coastguard Worker struct SimplePadSymmetricFixture : PadFixture
132*89c4ff92SAndroid Build Coastguard Worker {
SimplePadSymmetricFixtureSimplePadSymmetricFixture133*89c4ff92SAndroid Build Coastguard Worker     SimplePadSymmetricFixture() : PadFixture("[ 2, 2, 2 ]",
134*89c4ff92SAndroid Build Coastguard Worker                                              "[ 1, 1, 1, 1, 1, 1 ]",
135*89c4ff92SAndroid Build Coastguard Worker                                              "[ 4, 4, 4 ]",
136*89c4ff92SAndroid Build Coastguard Worker                                              "QuantisedAsymm8",
137*89c4ff92SAndroid Build Coastguard Worker                                              "Symmetric") {}
138*89c4ff92SAndroid Build Coastguard Worker };
139*89c4ff92SAndroid Build Coastguard Worker 
140*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimplePadSymmetricFixture, "SimplePadSymmetricQuantisedAsymm8")
141*89c4ff92SAndroid Build Coastguard Worker {
142*89c4ff92SAndroid Build Coastguard Worker     RunTest<3, armnn::DataType::QAsymmU8>(0,
143*89c4ff92SAndroid Build Coastguard Worker                                           {
144*89c4ff92SAndroid Build Coastguard Worker                                               1, 2,
145*89c4ff92SAndroid Build Coastguard Worker                                               3, 4,
146*89c4ff92SAndroid Build Coastguard Worker 
147*89c4ff92SAndroid Build Coastguard Worker                                               5, 6,
148*89c4ff92SAndroid Build Coastguard Worker                                               7, 8
149*89c4ff92SAndroid Build Coastguard Worker                                           },
150*89c4ff92SAndroid Build Coastguard Worker                                           {
151*89c4ff92SAndroid Build Coastguard Worker                                               1, 1, 2, 2,
152*89c4ff92SAndroid Build Coastguard Worker                                               1, 1, 2, 2,
153*89c4ff92SAndroid Build Coastguard Worker                                               3, 3, 4, 4,
154*89c4ff92SAndroid Build Coastguard Worker                                               3, 3, 4, 4,
155*89c4ff92SAndroid Build Coastguard Worker 
156*89c4ff92SAndroid Build Coastguard Worker                                               1, 1, 2, 2,
157*89c4ff92SAndroid Build Coastguard Worker                                               1, 1, 2, 2,
158*89c4ff92SAndroid Build Coastguard Worker                                               3, 3, 4, 4,
159*89c4ff92SAndroid Build Coastguard Worker                                               3, 3, 4, 4,
160*89c4ff92SAndroid Build Coastguard Worker 
161*89c4ff92SAndroid Build Coastguard Worker                                               5, 5, 6, 6,
162*89c4ff92SAndroid Build Coastguard Worker                                               5, 5, 6, 6,
163*89c4ff92SAndroid Build Coastguard Worker                                               7, 7, 8, 8,
164*89c4ff92SAndroid Build Coastguard Worker                                               7, 7, 8, 8,
165*89c4ff92SAndroid Build Coastguard Worker 
166*89c4ff92SAndroid Build Coastguard Worker                                               5, 5, 6, 6,
167*89c4ff92SAndroid Build Coastguard Worker                                               5, 5, 6, 6,
168*89c4ff92SAndroid Build Coastguard Worker                                               7, 7, 8, 8,
169*89c4ff92SAndroid Build Coastguard Worker                                               7, 7, 8, 8
170*89c4ff92SAndroid Build Coastguard Worker                                           });
171*89c4ff92SAndroid Build Coastguard Worker }
172*89c4ff92SAndroid Build Coastguard Worker 
173*89c4ff92SAndroid Build Coastguard Worker struct SimplePadReflectFixture : PadFixture
174*89c4ff92SAndroid Build Coastguard Worker {
SimplePadReflectFixtureSimplePadReflectFixture175*89c4ff92SAndroid Build Coastguard Worker     SimplePadReflectFixture() : PadFixture("[ 2, 2, 2 ]",
176*89c4ff92SAndroid Build Coastguard Worker                                            "[ 1, 1, 1, 1, 1, 1 ]",
177*89c4ff92SAndroid Build Coastguard Worker                                            "[ 4, 4, 4 ]",
178*89c4ff92SAndroid Build Coastguard Worker                                            "QuantisedAsymm8",
179*89c4ff92SAndroid Build Coastguard Worker                                            "Reflect") {}
180*89c4ff92SAndroid Build Coastguard Worker };
181*89c4ff92SAndroid Build Coastguard Worker 
182*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimplePadReflectFixture, "SimplePadReflectQuantisedAsymm8")
183*89c4ff92SAndroid Build Coastguard Worker {
184*89c4ff92SAndroid Build Coastguard Worker     RunTest<3, armnn::DataType::QAsymmU8>(0,
185*89c4ff92SAndroid Build Coastguard Worker                                           {
186*89c4ff92SAndroid Build Coastguard Worker                                               1, 2,
187*89c4ff92SAndroid Build Coastguard Worker                                               3, 4,
188*89c4ff92SAndroid Build Coastguard Worker 
189*89c4ff92SAndroid Build Coastguard Worker                                               5, 6,
190*89c4ff92SAndroid Build Coastguard Worker                                               7, 8
191*89c4ff92SAndroid Build Coastguard Worker                                           },
192*89c4ff92SAndroid Build Coastguard Worker                                           {
193*89c4ff92SAndroid Build Coastguard Worker                                               8, 7, 8, 7,
194*89c4ff92SAndroid Build Coastguard Worker                                               6, 5, 6, 5,
195*89c4ff92SAndroid Build Coastguard Worker                                               8, 7, 8, 7,
196*89c4ff92SAndroid Build Coastguard Worker                                               6, 5, 6, 5,
197*89c4ff92SAndroid Build Coastguard Worker 
198*89c4ff92SAndroid Build Coastguard Worker                                               4, 3, 4, 3,
199*89c4ff92SAndroid Build Coastguard Worker                                               2, 1, 2, 1,
200*89c4ff92SAndroid Build Coastguard Worker                                               4, 3, 4, 3,
201*89c4ff92SAndroid Build Coastguard Worker                                               2, 1, 2, 1,
202*89c4ff92SAndroid Build Coastguard Worker 
203*89c4ff92SAndroid Build Coastguard Worker                                               8, 7, 8, 7,
204*89c4ff92SAndroid Build Coastguard Worker                                               6, 5, 6, 5,
205*89c4ff92SAndroid Build Coastguard Worker                                               8, 7, 8, 7,
206*89c4ff92SAndroid Build Coastguard Worker                                               6, 5, 6, 5,
207*89c4ff92SAndroid Build Coastguard Worker 
208*89c4ff92SAndroid Build Coastguard Worker                                               4, 3, 4, 3,
209*89c4ff92SAndroid Build Coastguard Worker                                               2, 1, 2, 1,
210*89c4ff92SAndroid Build Coastguard Worker                                               4, 3, 4, 3,
211*89c4ff92SAndroid Build Coastguard Worker                                               2, 1, 2, 1
212*89c4ff92SAndroid Build Coastguard Worker                                           });
213*89c4ff92SAndroid Build Coastguard Worker }
214*89c4ff92SAndroid Build Coastguard Worker 
215*89c4ff92SAndroid Build Coastguard Worker }
216