xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/test/DeserializeConstant.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("DeserializeParser_Constant")
12*89c4ff92SAndroid Build Coastguard Worker {
13*89c4ff92SAndroid Build Coastguard Worker struct ConstantAddFixture : public ParserFlatbuffersSerializeFixture
14*89c4ff92SAndroid Build Coastguard Worker {
ConstantAddFixtureConstantAddFixture15*89c4ff92SAndroid Build Coastguard Worker     explicit ConstantAddFixture(const std::string & shape,
16*89c4ff92SAndroid Build Coastguard Worker                                 const std::string & constTensorDatatype,
17*89c4ff92SAndroid Build Coastguard Worker                                 const std::string & constData,
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: [3],
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: "InputLayer1",
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: )" + shape + 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                 {
48*89c4ff92SAndroid Build Coastguard Worker                 layer_type: "ConstantLayer",
49*89c4ff92SAndroid Build Coastguard Worker                 layer: {
50*89c4ff92SAndroid Build Coastguard Worker                             base: {
51*89c4ff92SAndroid Build Coastguard Worker                                   index:1,
52*89c4ff92SAndroid Build Coastguard Worker                                   layerName: "ConstantLayer",
53*89c4ff92SAndroid Build Coastguard Worker                                   layerType: "Constant",
54*89c4ff92SAndroid Build Coastguard Worker                                   outputSlots: [ {
55*89c4ff92SAndroid Build Coastguard Worker                                       index: 0,
56*89c4ff92SAndroid Build Coastguard Worker                                       tensorInfo: {
57*89c4ff92SAndroid Build Coastguard Worker                                           dimensions: )" + shape + R"(,
58*89c4ff92SAndroid Build Coastguard Worker                                           dataType: )" + dataType + R"(,
59*89c4ff92SAndroid Build Coastguard Worker                                       },
60*89c4ff92SAndroid Build Coastguard Worker                                   }],
61*89c4ff92SAndroid Build Coastguard Worker                                   inputSlots: [{
62*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
63*89c4ff92SAndroid Build Coastguard Worker                                         connection: {sourceLayerIndex:0, outputSlotIndex:0 },
64*89c4ff92SAndroid Build Coastguard Worker                                     }],
65*89c4ff92SAndroid Build Coastguard Worker                                 },
66*89c4ff92SAndroid Build Coastguard Worker                             input: {
67*89c4ff92SAndroid Build Coastguard Worker                                 info: {
68*89c4ff92SAndroid Build Coastguard Worker                                          dimensions: )" + shape + R"(,
69*89c4ff92SAndroid Build Coastguard Worker                                          dataType: )" + dataType + R"(
70*89c4ff92SAndroid Build Coastguard Worker                                      },
71*89c4ff92SAndroid Build Coastguard Worker                                 data_type: )" + constTensorDatatype + R"(,
72*89c4ff92SAndroid Build Coastguard Worker                                 data: {
73*89c4ff92SAndroid Build Coastguard Worker                                     data: )" + constData + R"(,
74*89c4ff92SAndroid Build Coastguard Worker                                     } }
75*89c4ff92SAndroid Build Coastguard Worker                         },
76*89c4ff92SAndroid Build Coastguard Worker                 },
77*89c4ff92SAndroid Build Coastguard Worker                 {
78*89c4ff92SAndroid Build Coastguard Worker                 layer_type: "AdditionLayer",
79*89c4ff92SAndroid Build Coastguard Worker                 layer : {
80*89c4ff92SAndroid Build Coastguard Worker                         base: {
81*89c4ff92SAndroid Build Coastguard Worker                              index:2,
82*89c4ff92SAndroid Build Coastguard Worker                              layerName: "AdditionLayer",
83*89c4ff92SAndroid Build Coastguard Worker                              layerType: "Addition",
84*89c4ff92SAndroid Build Coastguard Worker                              inputSlots: [
85*89c4ff92SAndroid Build Coastguard Worker                                             {
86*89c4ff92SAndroid Build Coastguard Worker                                              index: 0,
87*89c4ff92SAndroid Build Coastguard Worker                                              connection: {sourceLayerIndex:0, outputSlotIndex:0 },
88*89c4ff92SAndroid Build Coastguard Worker                                             },
89*89c4ff92SAndroid Build Coastguard Worker                                             {
90*89c4ff92SAndroid Build Coastguard Worker                                              index: 1,
91*89c4ff92SAndroid Build Coastguard Worker                                              connection: {sourceLayerIndex:1, outputSlotIndex:0 },
92*89c4ff92SAndroid Build Coastguard Worker                                             }
93*89c4ff92SAndroid Build Coastguard Worker                              ],
94*89c4ff92SAndroid Build Coastguard Worker                              outputSlots: [ {
95*89c4ff92SAndroid Build Coastguard Worker                                  index: 0,
96*89c4ff92SAndroid Build Coastguard Worker                                  tensorInfo: {
97*89c4ff92SAndroid Build Coastguard Worker                                      dimensions: )" + shape + R"(,
98*89c4ff92SAndroid Build Coastguard Worker                                      dataType: )" + dataType + R"(
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                 {
104*89c4ff92SAndroid Build Coastguard Worker                 layer_type: "OutputLayer",
105*89c4ff92SAndroid Build Coastguard Worker                 layer: {
106*89c4ff92SAndroid Build Coastguard Worker                         base:{
107*89c4ff92SAndroid Build Coastguard Worker                               layerBindingId: 0,
108*89c4ff92SAndroid Build Coastguard Worker                               base: {
109*89c4ff92SAndroid Build Coastguard Worker                                     index: 3,
110*89c4ff92SAndroid Build Coastguard Worker                                     layerName: "OutputLayer",
111*89c4ff92SAndroid Build Coastguard Worker                                     layerType: "Output",
112*89c4ff92SAndroid Build Coastguard Worker                                     inputSlots: [{
113*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
114*89c4ff92SAndroid Build Coastguard Worker                                         connection: {sourceLayerIndex:2, outputSlotIndex:0 },
115*89c4ff92SAndroid Build Coastguard Worker                                     }],
116*89c4ff92SAndroid Build Coastguard Worker                                     outputSlots: [ {
117*89c4ff92SAndroid Build Coastguard Worker                                         index: 0,
118*89c4ff92SAndroid Build Coastguard Worker                                         tensorInfo: {
119*89c4ff92SAndroid Build Coastguard Worker                                             dimensions: )" + shape + R"(,
120*89c4ff92SAndroid Build Coastguard Worker                                             dataType: )" + dataType + R"(
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                 featureVersions: {
126*89c4ff92SAndroid Build Coastguard Worker                     weightsLayoutScheme: 1,
127*89c4ff92SAndroid Build Coastguard Worker                 }
128*89c4ff92SAndroid Build Coastguard Worker          }
129*89c4ff92SAndroid Build Coastguard Worker         )";
130*89c4ff92SAndroid Build Coastguard Worker         SetupSingleInputSingleOutput("InputLayer1", "OutputLayer");
131*89c4ff92SAndroid Build Coastguard Worker     }
132*89c4ff92SAndroid Build Coastguard Worker };
133*89c4ff92SAndroid Build Coastguard Worker 
134*89c4ff92SAndroid Build Coastguard Worker struct SimpleConstantAddFixture : ConstantAddFixture
135*89c4ff92SAndroid Build Coastguard Worker {
SimpleConstantAddFixtureSimpleConstantAddFixture136*89c4ff92SAndroid Build Coastguard Worker     SimpleConstantAddFixture()
137*89c4ff92SAndroid Build Coastguard Worker             : ConstantAddFixture("[ 2, 3 ]",             // shape
138*89c4ff92SAndroid Build Coastguard Worker                                  "ByteData",             // constDataType
139*89c4ff92SAndroid Build Coastguard Worker                                  "[ 1, 2, 3, 4, 5, 6 ]", // constData
140*89c4ff92SAndroid Build Coastguard Worker                                  "QuantisedAsymm8")      // datatype
141*89c4ff92SAndroid Build Coastguard Worker 
142*89c4ff92SAndroid Build Coastguard Worker     {}
143*89c4ff92SAndroid Build Coastguard Worker };
144*89c4ff92SAndroid Build Coastguard Worker 
145*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleConstantAddFixture, "SimpleConstantAddQuantisedAsymm8")
146*89c4ff92SAndroid Build Coastguard Worker {
147*89c4ff92SAndroid Build Coastguard Worker     RunTest<2, armnn::DataType::QAsymmU8>(
148*89c4ff92SAndroid Build Coastguard Worker             0,
149*89c4ff92SAndroid Build Coastguard Worker             { 1, 2, 3, 4, 5, 6  },
150*89c4ff92SAndroid Build Coastguard Worker             { 2, 4, 6, 8, 10, 12 });
151*89c4ff92SAndroid Build Coastguard Worker }
152*89c4ff92SAndroid Build Coastguard Worker 
153*89c4ff92SAndroid Build Coastguard Worker }