43{
44 uint32_t top;
45 uint32_t bottom;
46 uint32_t left;
47 uint32_t right;
48
49 if (padding_name == "VALID")
50 {
51 top = bottom = left = right = 0;
52 }
53 else if (padding_name == "SAME")
54 {
55 const int32_t vertical_needed_input = (ofm_H - 1) * vertical_stride + ker_H;
56 const int32_t vertical_total_padding = std::max(0, vertical_needed_input - (int32_t)ifm_H);
57
58 const int32_t horizontal_needed_input = (ofm_W - 1) * horizontal_stride + ker_W;
59 const int32_t horizontal_total_padding = std::max(0, horizontal_needed_input - (int32_t)ifm_W);
60
61 top = vertical_total_padding / 2;
62 bottom = (vertical_total_padding + 1) / 2;
63 left = horizontal_total_padding / 2;
64 right = (horizontal_total_padding + 1) / 2;
65 }
66
67 return PaddingInfo{top, bottom, left, right};
68}