Change all size_t to uint32_t when generate GEN binary, size_t is non compat between 32bit system and 64bit system, and uint32_t is enough.
Signed-off-by: Yang Rong <[email protected]> --- backend/src/backend/gen_program.cpp | 2 +- backend/src/backend/gen_program.hpp | 2 +- backend/src/backend/program.cpp | 76 ++++++++++++++++++++----------------- backend/src/backend/program.hpp | 12 +++--- backend/src/ir/constant.cpp | 51 +++++++++++++------------ backend/src/ir/constant.hpp | 4 +- backend/src/ir/image.cpp | 21 +++++----- backend/src/ir/image.hpp | 4 +- backend/src/ir/sampler.cpp | 16 ++++---- backend/src/ir/sampler.hpp | 4 +- backend/src/sys/platform.hpp | 8 ++-- 11 files changed, 107 insertions(+), 93 deletions(-) diff --git a/backend/src/backend/gen_program.cpp b/backend/src/backend/gen_program.cpp index 0abe54e..69ddb22 100644 --- a/backend/src/backend/gen_program.cpp +++ b/backend/src/backend/gen_program.cpp @@ -80,7 +80,7 @@ namespace gbe { insns = (GenInstruction *)ins; insnNum = size / sizeof(GenInstruction); } - size_t GenKernel::getCodeSize(void) const { return insnNum * sizeof(GenInstruction); } + uint32_t GenKernel::getCodeSize(void) const { return insnNum * sizeof(GenInstruction); } void GenKernel::printStatus(int indent, std::ostream& outs) { #ifdef GBE_COMPILER_AVAILABLE diff --git a/backend/src/backend/gen_program.hpp b/backend/src/backend/gen_program.hpp index 00b484a..076f617 100644 --- a/backend/src/backend/gen_program.hpp +++ b/backend/src/backend/gen_program.hpp @@ -46,7 +46,7 @@ namespace gbe /*! Set the instruction stream (to be implemented) */ virtual void setCode(const char *, size_t size); /*! Implements get the code size */ - virtual size_t getCodeSize(void) const; + virtual uint32_t getCodeSize(void) const; /*! Implements printStatus*/ virtual void printStatus(int indent, std::ostream& outs); uint32_t deviceID; //!< Current device ID diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index 4f8167c..d13cba5 100644 --- a/backend/src/backend/program.cpp +++ b/backend/src/backend/program.cpp @@ -198,17 +198,17 @@ namespace gbe { #define OUT_UPDATE_SZ(elt) SERIALIZE_OUT(elt, outs, ret_size) #define IN_UPDATE_SZ(elt) DESERIALIZE_IN(elt, ins, total_size) - size_t Program::serializeToBin(std::ostream& outs) { - size_t ret_size = 0; - size_t ker_num = kernels.size(); - int has_constset = 0; + uint32_t Program::serializeToBin(std::ostream& outs) { + uint32_t ret_size = 0; + uint32_t ker_num = kernels.size(); + uint32_t has_constset = 0; OUT_UPDATE_SZ(magic_begin); if (constantSet) { has_constset = 1; OUT_UPDATE_SZ(has_constset); - size_t sz = constantSet->serializeToBin(outs); + uint32_t sz = constantSet->serializeToBin(outs); if (!sz) return 0; @@ -219,7 +219,7 @@ namespace gbe { OUT_UPDATE_SZ(ker_num); for (map<std::string, Kernel*>::iterator it = kernels.begin(); it != kernels.end(); ++it) { - size_t sz = it->second->serializeToBin(outs); + uint32_t sz = it->second->serializeToBin(outs); if (!sz) return 0; @@ -232,10 +232,10 @@ namespace gbe { return ret_size; } - size_t Program::deserializeFromBin(std::istream& ins) { - size_t total_size = 0; + uint32_t Program::deserializeFromBin(std::istream& ins) { + uint32_t total_size = 0; int has_constset = 0; - size_t ker_num; + uint32_t ker_num; uint32_t magic; IN_UPDATE_SZ(magic); @@ -245,19 +245,18 @@ namespace gbe { IN_UPDATE_SZ(has_constset); if(has_constset) { constantSet = new ir::ConstantSet; - size_t sz = constantSet->deserializeFromBin(ins); + uint32_t sz = constantSet->deserializeFromBin(ins); - if (sz == 0) { + if (sz == 0) return 0; - } total_size += sz; } IN_UPDATE_SZ(ker_num); - for (size_t i = 0; i < ker_num; i++) { - size_t ker_serial_sz; + for (uint32_t i = 0; i < ker_num; i++) { + uint32_t ker_serial_sz; std::string ker_name; // Just a empty name here. Kernel* ker = allocateKernel(ker_name); @@ -272,7 +271,7 @@ namespace gbe { if (magic != magic_end) return 0; - size_t total_bytes; + uint32_t total_bytes; IN_UPDATE_SZ(total_bytes); if (total_bytes + sizeof(total_size) != total_size) return 0; @@ -280,15 +279,17 @@ namespace gbe { return total_size; } - size_t Kernel::serializeToBin(std::ostream& outs) { + uint32_t Kernel::serializeToBin(std::ostream& outs) { unsigned int i; - size_t ret_size = 0; + uint32_t ret_size = 0; int has_samplerset = 0; int has_imageset = 0; + uint32_t sz = 0; OUT_UPDATE_SZ(magic_begin); - OUT_UPDATE_SZ(name.size()); + sz = name.size(); + OUT_UPDATE_SZ(sz); outs.write(name.c_str(), name.size()); ret_size += sizeof(char)*name.size(); @@ -302,25 +303,30 @@ namespace gbe { OUT_UPDATE_SZ(arg.info.addrSpace); - OUT_UPDATE_SZ(arg.info.typeName.size()); + sz = arg.info.typeName.size(); + OUT_UPDATE_SZ(sz); outs.write(arg.info.typeName.c_str(), arg.info.typeName.size()); ret_size += sizeof(char)*arg.info.typeName.size(); - OUT_UPDATE_SZ(arg.info.accessQual.size()); + sz = arg.info.accessQual.size(); + OUT_UPDATE_SZ(sz); outs.write(arg.info.accessQual.c_str(), arg.info.accessQual.size()); ret_size += sizeof(char)*arg.info.accessQual.size(); - OUT_UPDATE_SZ(arg.info.typeQual.size()); + sz = arg.info.typeQual.size(); + OUT_UPDATE_SZ(sz); outs.write(arg.info.typeQual.c_str(), arg.info.typeQual.size()); ret_size += sizeof(char)*arg.info.typeQual.size(); - OUT_UPDATE_SZ(arg.info.argName.size()); + sz = arg.info.argName.size(); + OUT_UPDATE_SZ(sz); outs.write(arg.info.argName.c_str(), arg.info.argName.size()); ret_size += sizeof(char)*arg.info.argName.size(); } - OUT_UPDATE_SZ(patches.size()); - for (size_t i = 0; i < patches.size(); ++i) { + sz = patches.size(); + OUT_UPDATE_SZ(sz); + for (uint32_t i = 0; i < patches.size(); ++i) { const PatchInfo& patch = patches[i]; unsigned int tmp; tmp = patch.type; @@ -344,7 +350,7 @@ namespace gbe { if (!samplerSet->empty()) { //samplerSet is always valid, allocated in Function::Function has_samplerset = 1; OUT_UPDATE_SZ(has_samplerset); - size_t sz = samplerSet->serializeToBin(outs); + uint32_t sz = samplerSet->serializeToBin(outs); if (!sz) return 0; @@ -357,7 +363,7 @@ namespace gbe { if (!imageSet->empty()) { //imageSet is always valid, allocated in Function::Function has_imageset = 1; OUT_UPDATE_SZ(has_imageset); - size_t sz = imageSet->serializeToBin(outs); + uint32_t sz = imageSet->serializeToBin(outs); if (!sz) return 0; @@ -378,19 +384,19 @@ namespace gbe { return ret_size; } - size_t Kernel::deserializeFromBin(std::istream& ins) { - size_t total_size = 0; + uint32_t Kernel::deserializeFromBin(std::istream& ins) { + uint32_t total_size = 0; int has_samplerset = 0; int has_imageset = 0; - size_t code_size = 0; + uint32_t code_size = 0; uint32_t magic = 0; - size_t patch_num = 0; + uint32_t patch_num = 0; IN_UPDATE_SZ(magic); if (magic != magic_begin) return 0; - size_t name_len; + uint32_t name_len; IN_UPDATE_SZ(name_len); char* c_name = new char[name_len+1]; ins.read(c_name, name_len*sizeof(char)); @@ -410,7 +416,7 @@ namespace gbe { IN_UPDATE_SZ(arg.info.addrSpace); - size_t len; + uint32_t len; char* a_name = NULL; IN_UPDATE_SZ(len); @@ -473,7 +479,7 @@ namespace gbe { IN_UPDATE_SZ(has_samplerset); if (has_samplerset) { samplerSet = GBE_NEW(ir::SamplerSet); - size_t sz = samplerSet->deserializeFromBin(ins); + uint32_t sz = samplerSet->deserializeFromBin(ins); if (sz == 0) { return 0; } @@ -486,7 +492,7 @@ namespace gbe { IN_UPDATE_SZ(has_imageset); if (has_imageset) { imageSet = GBE_NEW(ir::ImageSet); - size_t sz = imageSet->deserializeFromBin(ins); + uint32_t sz = imageSet->deserializeFromBin(ins); if (sz == 0) { return 0; } @@ -508,7 +514,7 @@ namespace gbe { if (magic != magic_end) return 0; - size_t total_bytes; + uint32_t total_bytes; IN_UPDATE_SZ(total_bytes); if (total_bytes + sizeof(total_size) != total_size) return 0; diff --git a/backend/src/backend/program.hpp b/backend/src/backend/program.hpp index 9570806..1f0ec55 100644 --- a/backend/src/backend/program.hpp +++ b/backend/src/backend/program.hpp @@ -90,7 +90,7 @@ namespace gbe { /*! Set the instruction stream.*/ virtual void setCode(const char *, size_t size) = 0; /*! Return the instruction stream size (to be implemented) */ - virtual size_t getCodeSize(void) const = 0; + virtual uint32_t getCodeSize(void) const = 0; /*! Get the kernel name */ INLINE const char *getName(void) const { return name.c_str(); } /*! Return the number of arguments for the kernel call */ @@ -225,8 +225,8 @@ namespace gbe { */ /*! Implements the serialization. */ - virtual size_t serializeToBin(std::ostream& outs); - virtual size_t deserializeFromBin(std::istream& ins); + virtual uint32_t serializeToBin(std::ostream& outs); + virtual uint32_t deserializeFromBin(std::istream& ins); virtual void printStatus(int indent, std::ostream& outs); protected: @@ -247,7 +247,7 @@ namespace gbe { ir::ImageSet *imageSet; //!< Copy from the corresponding function. ir::PrintfSet *printfSet; //!< Copy from the corresponding function. ir::ProfilingInfo *profilingInfo; //!< Copy from the corresponding function. - size_t compileWgSize[3]; //!< required work group size by kernel attribute. + uint32_t compileWgSize[3]; //!< required work group size by kernel attribute. std::string functionAttributes; //!< function attribute qualifiers combined. GBE_CLASS(Kernel); //!< Use custom allocators }; @@ -312,8 +312,8 @@ namespace gbe { */ /*! Implements the serialization. */ - virtual size_t serializeToBin(std::ostream& outs); - virtual size_t deserializeFromBin(std::istream& ins); + virtual uint32_t serializeToBin(std::ostream& outs); + virtual uint32_t deserializeFromBin(std::istream& ins); virtual void printStatus(int indent, std::ostream& outs); uint32_t fast_relaxed_math : 1; diff --git a/backend/src/ir/constant.cpp b/backend/src/ir/constant.cpp index fa4e14a..54ae3f1 100644 --- a/backend/src/ir/constant.cpp +++ b/backend/src/ir/constant.cpp @@ -43,31 +43,34 @@ namespace ir { #define OUT_UPDATE_SZ(elt) SERIALIZE_OUT(elt, outs, ret_size) #define IN_UPDATE_SZ(elt) DESERIALIZE_IN(elt, ins, total_size) - size_t ConstantSet::serializeToBin(std::ostream& outs) { - size_t ret_size = 0; + uint32_t ConstantSet::serializeToBin(std::ostream& outs) { + uint32_t ret_size = 0; OUT_UPDATE_SZ(magic_begin); /* output the const data. */ - OUT_UPDATE_SZ((data.size()*sizeof(char))); + uint32_t sz = data.size()*sizeof(char); + OUT_UPDATE_SZ(sz); if(data.size() > 0) { - outs.write(data.data(), data.size()*sizeof(char)); - ret_size += data.size()*sizeof(char); + outs.write(data.data(), sz); + ret_size += sz; } - OUT_UPDATE_SZ(constants.size()); - for (size_t i = 0; i < constants.size(); ++i) { + sz = constants.size(); + OUT_UPDATE_SZ(sz); + for (uint32_t i = 0; i < constants.size(); ++i) { Constant& cnst = constants[i]; - size_t bytes = sizeof(cnst.getName().size()) //name length self - + cnst.getName().size()*sizeof(char) //name - + sizeof(cnst.getSize()) //size - + sizeof(cnst.getAlignment()) //alignment - + sizeof(cnst.getOffset()); //offset + sz = cnst.getName().size()*sizeof(char); + uint32_t bytes = sizeof(sz) //name length self + + sz //name + + sizeof(cnst.getSize()) //size + + sizeof(cnst.getAlignment()) //alignment + + sizeof(cnst.getOffset()); //offset OUT_UPDATE_SZ(bytes); - OUT_UPDATE_SZ(cnst.getName().size()); - outs.write(cnst.getName().c_str(), cnst.getName().size()); - ret_size += sizeof(char)*cnst.getName().size(); + OUT_UPDATE_SZ(sz); + outs.write(cnst.getName().c_str(), sz); + ret_size += sz; OUT_UPDATE_SZ(cnst.getSize()); OUT_UPDATE_SZ(cnst.getAlignment()); OUT_UPDATE_SZ(cnst.getOffset()); @@ -79,10 +82,10 @@ namespace ir { return ret_size; } - size_t ConstantSet::deserializeFromBin(std::istream& ins) { - size_t total_size = 0; - size_t global_data_sz = 0; - size_t const_num; + uint32_t ConstantSet::deserializeFromBin(std::istream& ins) { + uint32_t total_size = 0; + uint32_t global_data_sz = 0; + uint32_t const_num; uint32_t magic; IN_UPDATE_SZ(magic); @@ -90,18 +93,18 @@ namespace ir { return 0; IN_UPDATE_SZ(global_data_sz); - for (size_t i = 0; i < global_data_sz; i++) { + for (uint32_t i = 0; i < global_data_sz; i++) { char elt; IN_UPDATE_SZ(elt); data.push_back(elt); } IN_UPDATE_SZ(const_num); - for (size_t i = 0; i < const_num; i++) { - size_t bytes; + for (uint32_t i = 0; i < const_num; i++) { + uint32_t bytes; IN_UPDATE_SZ(bytes); - size_t name_len; + uint32_t name_len; IN_UPDATE_SZ(name_len); char* c_name = new char[name_len+1]; @@ -129,7 +132,7 @@ namespace ir { if (magic != magic_end) return 0; - size_t total_bytes; + uint32_t total_bytes; IN_UPDATE_SZ(total_bytes); if (total_bytes + sizeof(total_size) != total_size) return 0; diff --git a/backend/src/ir/constant.hpp b/backend/src/ir/constant.hpp index 0891d7b..c9080b8 100644 --- a/backend/src/ir/constant.hpp +++ b/backend/src/ir/constant.hpp @@ -119,8 +119,8 @@ namespace ir { */ /*! Implements the serialization. */ - virtual size_t serializeToBin(std::ostream& outs); - virtual size_t deserializeFromBin(std::istream& ins); + virtual uint32_t serializeToBin(std::ostream& outs); + virtual uint32_t deserializeFromBin(std::istream& ins); private: vector<char> data; //!< The constant data serialized in one array diff --git a/backend/src/ir/image.cpp b/backend/src/ir/image.cpp index e006087..eaf6be7 100644 --- a/backend/src/ir/image.cpp +++ b/backend/src/ir/image.cpp @@ -107,12 +107,14 @@ namespace ir { #define IN_UPDATE_SZ(elt) DESERIALIZE_IN(elt, ins, total_size) /*! Implements the serialization. */ - size_t ImageSet::serializeToBin(std::ostream& outs) { - size_t ret_size = 0; + uint32_t ImageSet::serializeToBin(std::ostream& outs) { + uint32_t ret_size = 0; + uint32_t sz = 0; OUT_UPDATE_SZ(magic_begin); - OUT_UPDATE_SZ(regMap.size()); + sz = regMap.size(); + OUT_UPDATE_SZ(sz); for (map<Register, struct ImageInfo *>::const_iterator it = regMap.begin(); it != regMap.end(); ++it) { OUT_UPDATE_SZ(it->first); OUT_UPDATE_SZ(it->second->arg_idx); @@ -125,7 +127,8 @@ namespace ir { OUT_UPDATE_SZ(it->second->dimOrderSlot); } - OUT_UPDATE_SZ(indexMap.size()); + sz = indexMap.size(); + OUT_UPDATE_SZ(sz); for (map<uint32_t, struct ImageInfo *>::iterator it = indexMap.begin(); it != indexMap.end(); ++it) { OUT_UPDATE_SZ(it->first); OUT_UPDATE_SZ(it->second->arg_idx); @@ -144,17 +147,17 @@ namespace ir { return ret_size; } - size_t ImageSet::deserializeFromBin(std::istream& ins) { - size_t total_size = 0; + uint32_t ImageSet::deserializeFromBin(std::istream& ins) { + uint32_t total_size = 0; uint32_t magic; - size_t image_map_sz = 0; + uint32_t image_map_sz = 0; IN_UPDATE_SZ(magic); if (magic != magic_begin) return 0; IN_UPDATE_SZ(image_map_sz); //regMap - for (size_t i = 0; i < image_map_sz; i++) { + for (uint32_t i = 0; i < image_map_sz; i++) { ir::Register reg; ImageInfo *img_info = GBE_NEW(struct ImageInfo);; @@ -193,7 +196,7 @@ namespace ir { if (magic != magic_end) return 0; - size_t total_bytes; + uint32_t total_bytes; IN_UPDATE_SZ(total_bytes); if (total_bytes + sizeof(total_size) != total_size) return 0; diff --git a/backend/src/ir/image.hpp b/backend/src/ir/image.hpp index a93a4b6..ca616c1 100644 --- a/backend/src/ir/image.hpp +++ b/backend/src/ir/image.hpp @@ -86,8 +86,8 @@ namespace ir { */ /*! Implements the serialization. */ - virtual size_t serializeToBin(std::ostream& outs); - virtual size_t deserializeFromBin(std::istream& ins); + virtual uint32_t serializeToBin(std::ostream& outs); + virtual uint32_t deserializeFromBin(std::istream& ins); virtual void printStatus(int indent, std::ostream& outs); private: diff --git a/backend/src/ir/sampler.cpp b/backend/src/ir/sampler.cpp index a4e1ddd..1987344 100644 --- a/backend/src/ir/sampler.cpp +++ b/backend/src/ir/sampler.cpp @@ -65,12 +65,14 @@ namespace ir { #define IN_UPDATE_SZ(elt) DESERIALIZE_IN(elt, ins, total_size) /*! Implements the serialization. */ - size_t SamplerSet::serializeToBin(std::ostream& outs) { - size_t ret_size = 0; + uint32_t SamplerSet::serializeToBin(std::ostream& outs) { + uint32_t ret_size = 0; + uint32_t sz = 0; OUT_UPDATE_SZ(magic_begin); - OUT_UPDATE_SZ(samplerMap.size()); + sz = samplerMap.size(); + OUT_UPDATE_SZ(sz); for (map<uint32_t, uint32_t>::iterator it = samplerMap.begin(); it != samplerMap.end(); ++it) { OUT_UPDATE_SZ(it->first); OUT_UPDATE_SZ(it->second); @@ -82,10 +84,10 @@ namespace ir { return ret_size; } - size_t SamplerSet::deserializeFromBin(std::istream& ins) { - size_t total_size = 0; + uint32_t SamplerSet::deserializeFromBin(std::istream& ins) { + uint32_t total_size = 0; uint32_t magic; - size_t sampler_map_sz = 0; + uint32_t sampler_map_sz = 0; IN_UPDATE_SZ(magic); if (magic != magic_begin) @@ -105,7 +107,7 @@ namespace ir { if (magic != magic_end) return 0; - size_t total_bytes; + uint32_t total_bytes; IN_UPDATE_SZ(total_bytes); if (total_bytes + sizeof(total_size) != total_size) return 0; diff --git a/backend/src/ir/sampler.hpp b/backend/src/ir/sampler.hpp index 85e6d54..036fa69 100644 --- a/backend/src/ir/sampler.hpp +++ b/backend/src/ir/sampler.hpp @@ -79,8 +79,8 @@ namespace ir { */ /*! Implements the serialization. */ - virtual size_t serializeToBin(std::ostream& outs); - virtual size_t deserializeFromBin(std::istream& ins); + virtual uint32_t serializeToBin(std::ostream& outs); + virtual uint32_t deserializeFromBin(std::istream& ins); virtual void printStatus(int indent, std::ostream& outs); private: diff --git a/backend/src/sys/platform.hpp b/backend/src/sys/platform.hpp index 803ce21..9ed9b2d 100644 --- a/backend/src/sys/platform.hpp +++ b/backend/src/sys/platform.hpp @@ -339,12 +339,12 @@ public: INLINE Serializable(const Serializable&) = default; INLINE Serializable& operator= (const Serializable&) = default; - virtual size_t serializeToBin(std::ostream& outs) = 0; - virtual size_t deserializeFromBin(std::istream& ins) = 0; + virtual uint32_t serializeToBin(std::ostream& outs) = 0; + virtual uint32_t deserializeFromBin(std::istream& ins) = 0; /* These two will follow LLVM's ABI. */ - virtual size_t serializeToLLVM(void) { return 0;/* not implemented now. */} - virtual size_t deserializeFromLLVM(void) { return 0;/* not implemented now. */} + virtual uint32_t serializeToLLVM(void) { return 0;/* not implemented now. */} + virtual uint32_t deserializeFromLLVM(void) { return 0;/* not implemented now. */} virtual void printStatus(int indent = 0, std::ostream& outs = std::cout) { } -- 2.1.4 _______________________________________________ Beignet mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/beignet
