From: 박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 Date: Wed, 28 Aug 2019 07:17:06 +0000 (+0900) Subject: [moco-tf] make_shape_inference_data from T (#6980) X-Git-Tag: accepted/tizen/unified/20190903.052428~87 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fd1ce0d037e888cd36fa9cd7ec96524bfe4618c5;p=platform%2Fcore%2Fml%2Fnnfw.git [moco-tf] make_shape_inference_data from T (#6980) This will introduce template make_shape_inference_data() that creates a copy of ShapeInferenceData from src Signed-off-by: SaeHie Park --- diff --git a/compiler/moco-tf/src/Transforms/FixShapeTransform.cpp b/compiler/moco-tf/src/Transforms/FixShapeTransform.cpp index 33f3832..2d6355b 100644 --- a/compiler/moco-tf/src/Transforms/FixShapeTransform.cpp +++ b/compiler/moco-tf/src/Transforms/FixShapeTransform.cpp @@ -65,6 +65,31 @@ template void copy_shape_values(const T *src, ShapeInferenceData *dst) } } +/** + * @brief Make copy of ShapeInferenceData from src + * + * @note T can be ShapeInferenceData or loco::Node based class having shape + * attributes like TFConst, COpCall and so on + */ +template std::unique_ptr make_shape_inference_data(const T *src) +{ + assert(src != nullptr); + + auto shape_data = stdex::make_unique(); + + uint32_t rank = src->rank(); + shape_data->rank(rank); + for (uint32_t index = 0; index < rank; ++index) + { + if (src->dim(index).known()) + shape_data->dim(index) = src->dim(index).value(); + else + shape_data->dim(index).unset(); + } + + return std::move(shape_data); +} + std::unique_ptr make_shape_inference_data(const loco::NodeShape &src) { auto shape_data = stdex::make_unique();