xref: /aosp_15_r20/external/armnn/src/armnnUtils/PrototxtConversions.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 "PrototxtConversions.hpp"
7*89c4ff92SAndroid Build Coastguard Worker #include "armnn/Tensor.hpp"
8*89c4ff92SAndroid Build Coastguard Worker 
9*89c4ff92SAndroid Build Coastguard Worker #include <iomanip>
10*89c4ff92SAndroid Build Coastguard Worker #include <sstream>
11*89c4ff92SAndroid Build Coastguard Worker #include <string>
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker namespace armnnUtils
14*89c4ff92SAndroid Build Coastguard Worker {
15*89c4ff92SAndroid Build Coastguard Worker 
16*89c4ff92SAndroid Build Coastguard Worker /// Converts an int value into the Prototxt octal representation
ConvertInt32ToOctalString(int value)17*89c4ff92SAndroid Build Coastguard Worker std::string ConvertInt32ToOctalString(int value)
18*89c4ff92SAndroid Build Coastguard Worker {
19*89c4ff92SAndroid Build Coastguard Worker     std::stringstream ss;
20*89c4ff92SAndroid Build Coastguard Worker     std::string returnString;
21*89c4ff92SAndroid Build Coastguard Worker     for (int i = 0; i < 4; ++i)
22*89c4ff92SAndroid Build Coastguard Worker     {
23*89c4ff92SAndroid Build Coastguard Worker         ss << "\\";
24*89c4ff92SAndroid Build Coastguard Worker         ss << std::setw(3) << std::setfill('0') << std::oct << ((value >> (i * 8)) & 0xFF);
25*89c4ff92SAndroid Build Coastguard Worker     }
26*89c4ff92SAndroid Build Coastguard Worker 
27*89c4ff92SAndroid Build Coastguard Worker     ss >> returnString;
28*89c4ff92SAndroid Build Coastguard Worker     return returnString;
29*89c4ff92SAndroid Build Coastguard Worker }
30*89c4ff92SAndroid Build Coastguard Worker 
31*89c4ff92SAndroid Build Coastguard Worker /// Converts an TensorShape into Prototxt representation
ConvertTensorShapeToString(const armnn::TensorShape & shape)32*89c4ff92SAndroid Build Coastguard Worker std::string ConvertTensorShapeToString(const armnn::TensorShape& shape)
33*89c4ff92SAndroid Build Coastguard Worker {
34*89c4ff92SAndroid Build Coastguard Worker     std::stringstream ss;
35*89c4ff92SAndroid Build Coastguard Worker     for (unsigned int i = 0 ; i < shape.GetNumDimensions() ; i++)
36*89c4ff92SAndroid Build Coastguard Worker     {
37*89c4ff92SAndroid Build Coastguard Worker         ss << "dim {\n";
38*89c4ff92SAndroid Build Coastguard Worker         ss << "size: " << std::to_string(shape[i]) << "\n";
39*89c4ff92SAndroid Build Coastguard Worker         ss << "}\n";
40*89c4ff92SAndroid Build Coastguard Worker     }
41*89c4ff92SAndroid Build Coastguard Worker     return ss.str();
42*89c4ff92SAndroid Build Coastguard Worker 
43*89c4ff92SAndroid Build Coastguard Worker }
44*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnUtils
45