[moco-tf] Use common calc_paddata in FixShape (#6346)
author박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Wed, 7 Aug 2019 22:01:57 +0000 (07:01 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 7 Aug 2019 22:01:57 +0000 (07:01 +0900)
This will change calc_node_pad() and calc_annot_paddata() to use common calc_annot_paddata() in FixShapeTransform

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
compiler/moco-tf/src/Transforms/FixShapeTransform.cpp

index 85c2c5c..9832021 100644 (file)
@@ -130,48 +130,20 @@ PadData calc_paddata(const FixPadContext &ctx)
 template <class T> void calc_node_pad(T *node, const FixPadContext &ctx)
 {
   assert(node != nullptr);
-  assert(ctx.output_height > 0);
-  assert(ctx.output_width > 0);
 
-  // calculate padding height, width
-  int64_t i_height = (int64_t)(ctx.output_height - 1) * (int64_t)ctx.stride_height +
-                     (int64_t)ctx.effective_window_height - (int64_t)ctx.input_height;
-  int64_t i_width = (int64_t)(ctx.output_width - 1) * (int64_t)ctx.stride_width +
-                    (int64_t)ctx.effective_window_width - (int64_t)ctx.input_width;
-  uint32_t pad_height = i_height >= 0 ? (uint32_t)i_height : 0U;
-  uint32_t pad_width = i_width >= 0 ? (uint32_t)i_width : 0U;
+  PadData pd = calc_paddata(ctx);
 
-  // set padding values
-  node->pad()->top(pad_height / 2);
-  node->pad()->bottom(pad_height - node->pad()->top());
-  node->pad()->left(pad_width / 2);
-  node->pad()->right(pad_width - node->pad()->left());
+  *node->pad() = *pd.pad();
 }
 
 template <class T> void calc_annot_paddata(T *node, const FixPadContext &ctx)
 {
   assert(node != nullptr);
-  assert(ctx.output_height > 0);
-  assert(ctx.output_width > 0);
-
-  // PadData should be null
-  assert(node->template annot<PadData>() == nullptr);
 
-  // calculate padding height, width
-  int64_t i_height = (int64_t)(ctx.output_height - 1) * (int64_t)ctx.stride_height +
-                     (int64_t)ctx.effective_window_height - (int64_t)ctx.input_height;
-  int64_t i_width = (int64_t)(ctx.output_width - 1) * (int64_t)ctx.stride_width +
-                    (int64_t)ctx.effective_window_width - (int64_t)ctx.input_width;
-  uint32_t pad_height = i_height >= 0 ? (uint32_t)i_height : 0U;
-  uint32_t pad_width = i_width >= 0 ? (uint32_t)i_width : 0U;
+  PadData pd = calc_paddata(ctx);
 
   // annotation of pad data
-  auto pad_data = stdex::make_unique<PadData>();
-
-  pad_data->pad()->top(pad_height / 2);
-  pad_data->pad()->bottom(pad_height - pad_data->pad()->top());
-  pad_data->pad()->left(pad_width / 2);
-  pad_data->pad()->right(pad_width - pad_data->pad()->left());
+  auto pad_data = stdex::make_unique<PadData>(pd);
 
   node->annot(std::move(pad_data));