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 Workerstd::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 Workerstd::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