aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/PaddingCalculator.h56
-rw-r--r--tests/validation/CL/BitwiseAnd.cpp2
-rw-r--r--tests/validation/CL/DepthConvert.cpp2
-rw-r--r--tests/validation/CL/IntegralImage.cpp9
-rw-r--r--tests/validation/CL/Threshold.cpp2
-rw-r--r--tests/validation/NEON/AbsoluteDifference.cpp2
-rw-r--r--tests/validation/NEON/Accumulate.cpp2
-rw-r--r--tests/validation/NEON/AccumulateSquared.cpp2
-rw-r--r--tests/validation/NEON/AccumulateWeighted.cpp2
-rw-r--r--tests/validation/NEON/ActivationLayer.cpp2
-rw-r--r--tests/validation/NEON/ArithmeticAddition.cpp2
-rw-r--r--tests/validation/NEON/ArithmeticSubtraction.cpp2
-rw-r--r--tests/validation/NEON/BitwiseAnd.cpp2
-rw-r--r--tests/validation/NEON/BitwiseNot.cpp2
-rw-r--r--tests/validation/NEON/BitwiseOr.cpp2
-rw-r--r--tests/validation/NEON/BitwiseXor.cpp2
-rw-r--r--tests/validation/NEON/Box3x3.cpp8
-rw-r--r--tests/validation/NEON/DepthConvert.cpp2
-rw-r--r--tests/validation/NEON/IntegralImage.cpp5
-rw-r--r--tests/validation/NEON/MeanStdDev.cpp3
-rw-r--r--tests/validation/NEON/PixelWiseMultiplication.cpp2
-rw-r--r--tests/validation/NEON/SoftmaxLayer.cpp4
-rw-r--r--tests/validation/NEON/Threshold.cpp14
23 files changed, 87 insertions, 44 deletions
diff --git a/tests/PaddingCalculator.h b/tests/PaddingCalculator.h
index 029312b73b..6906353a66 100644
--- a/tests/PaddingCalculator.h
+++ b/tests/PaddingCalculator.h
@@ -26,6 +26,8 @@
#include "arm_compute/core/Types.h"
+#include <cmath>
+
namespace arm_compute
{
namespace test
@@ -34,6 +36,13 @@ namespace test
class PaddingCalculator final
{
public:
+ /** Options for computing the padding */
+ enum class Option
+ {
+ EXCLUDE_BORDER,
+ INCLUDE_BORDER
+ };
+
/** Construct calculator with size of tensor's dimension and step size.
*
* @param[in] size Number of elements available.
@@ -62,6 +71,12 @@ public:
*/
void set_access_offset(int offset);
+ /** Set number of processed elements.
+ *
+ * @param[in] elements Number of processed elements per iteration.
+ */
+ void set_processed_elements(int elements);
+
/** Set number of accessed elements.
*
* @param[in] elements Number of accessed elements per iteration.
@@ -70,9 +85,25 @@ public:
/** Compute the required padding.
*
+ * If access offset is negative and border mode is not undefined, the top,
+ * bottom and left padding is set to boder size. Otherwise it is zero.
+ * The right padding is always computed based on the specified parameters.
+ *
* @return Required padding in number of elements.
*/
- int required_padding() const;
+ PaddingSize required_padding() const;
+
+ /** Compute the required padding.
+ *
+ * If @p option is INCLUDE_BORDER and border mode is not undefined, the top,
+ * bottom and left padding is set to boder size. Otherwise it is zero.
+ * The right padding is always computed based on the specified parameters.
+ *
+ * @param[in] option Padding option
+ *
+ * @return Required padding in number of elements.
+ */
+ PaddingSize required_padding(Option option) const;
private:
int _size;
@@ -98,21 +129,38 @@ inline void PaddingCalculator::set_access_offset(int offset)
_offset = offset;
}
+inline void PaddingCalculator::set_processed_elements(int elements)
+{
+ _num_processed_elements = elements;
+}
inline void PaddingCalculator::set_accessed_elements(int elements)
{
_num_accessed_elements = elements;
}
-inline int PaddingCalculator::required_padding() const
+inline PaddingSize PaddingCalculator::required_padding() const
{
+ return required_padding(_offset < 0 ? Option::INCLUDE_BORDER : Option::EXCLUDE_BORDER);
+}
+
+inline PaddingSize PaddingCalculator::required_padding(Option option) const
+{
+ PaddingSize padding{ (_mode == BorderMode::UNDEFINED || option == Option::EXCLUDE_BORDER) ? 0U : static_cast<unsigned int>(std::max(0, _border_size)) };
+
+ int padding_right = 0;
+
if(_mode == BorderMode::UNDEFINED)
{
- return (((_size - _border_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * _num_processed_elements + _num_accessed_elements - _size + _border_size + _offset;
+ padding_right = (((_size - 2 * _border_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * _num_processed_elements + _num_accessed_elements - _size + _border_size + _offset;
}
else
{
- return (((_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * _num_processed_elements + _num_accessed_elements - _size + _offset;
+ padding_right = (((_size + _num_processed_elements - 1) / _num_processed_elements) - 1) * _num_processed_elements + _num_accessed_elements - _size + _offset;
}
+
+ padding.right = std::max(0, padding_right);
+
+ return padding;
}
} // namespace test
} // namespace arm_compute
diff --git a/tests/validation/CL/BitwiseAnd.cpp b/tests/validation/CL/BitwiseAnd.cpp
index 99e7b3e353..bbafa87e3e 100644
--- a/tests/validation/CL/BitwiseAnd.cpp
+++ b/tests/validation/CL/BitwiseAnd.cpp
@@ -166,7 +166,7 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/CL/DepthConvert.cpp b/tests/validation/CL/DepthConvert.cpp
index a7dbbc8ab7..0bca453cf2 100644
--- a/tests/validation/CL/DepthConvert.cpp
+++ b/tests/validation/CL/DepthConvert.cpp
@@ -113,7 +113,7 @@ void compute_configure_validate(const TensorShape &shape, DataType dt_in, DataTy
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/CL/IntegralImage.cpp b/tests/validation/CL/IntegralImage.cpp
index 8f7c4b6ccf..9ace8bd2e8 100644
--- a/tests/validation/CL/IntegralImage.cpp
+++ b/tests/validation/CL/IntegralImage.cpp
@@ -108,12 +108,9 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- PaddingCalculator calculator(shape.x(), 16);
- const PaddingSize src_padding(0, calculator.required_padding(), 0, 0);
- const PaddingSize dst_padding(0, calculator.required_padding(), 0, 0);
-
- validate(src.info()->padding(), src_padding);
- validate(dst.info()->padding(), dst_padding);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
+ validate(src.info()->padding(), padding);
+ validate(dst.info()->padding(), padding);
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit"))
diff --git a/tests/validation/CL/Threshold.cpp b/tests/validation/CL/Threshold.cpp
index 122728d352..ff7b8f0694 100644
--- a/tests/validation/CL/Threshold.cpp
+++ b/tests/validation/CL/Threshold.cpp
@@ -115,7 +115,7 @@ BOOST_DATA_TEST_CASE(Configuration,
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/AbsoluteDifference.cpp b/tests/validation/NEON/AbsoluteDifference.cpp
index 22f9eac7cd..334a842c66 100644
--- a/tests/validation/NEON/AbsoluteDifference.cpp
+++ b/tests/validation/NEON/AbsoluteDifference.cpp
@@ -106,7 +106,7 @@ void validate_configuration(const Tensor &src1, const Tensor &src2, Tensor &dst,
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/NEON/Accumulate.cpp b/tests/validation/NEON/Accumulate.cpp
index e3b78aa444..157c298d7e 100644
--- a/tests/validation/NEON/Accumulate.cpp
+++ b/tests/validation/NEON/Accumulate.cpp
@@ -109,7 +109,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()),
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/AccumulateSquared.cpp b/tests/validation/NEON/AccumulateSquared.cpp
index e17b15ada1..3dbdeb2db1 100644
--- a/tests/validation/NEON/AccumulateSquared.cpp
+++ b/tests/validation/NEON/AccumulateSquared.cpp
@@ -110,7 +110,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * boost::uni
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/AccumulateWeighted.cpp b/tests/validation/NEON/AccumulateWeighted.cpp
index f2a4794f6c..cf1f74689f 100644
--- a/tests/validation/NEON/AccumulateWeighted.cpp
+++ b/tests/validation/NEON/AccumulateWeighted.cpp
@@ -109,7 +109,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * boost::uni
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/ActivationLayer.cpp b/tests/validation/NEON/ActivationLayer.cpp
index bf00173611..a4826accfa 100644
--- a/tests/validation/NEON/ActivationLayer.cpp
+++ b/tests/validation/NEON/ActivationLayer.cpp
@@ -152,7 +152,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * CNNDataTyp
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/ArithmeticAddition.cpp b/tests/validation/NEON/ArithmeticAddition.cpp
index cf37a58b44..d58d0cea1a 100644
--- a/tests/validation/NEON/ArithmeticAddition.cpp
+++ b/tests/validation/NEON/ArithmeticAddition.cpp
@@ -107,7 +107,7 @@ void validate_configuration(const Tensor &src1, const Tensor &src2, Tensor &dst,
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/NEON/ArithmeticSubtraction.cpp b/tests/validation/NEON/ArithmeticSubtraction.cpp
index 50659a1cd0..ade473abff 100644
--- a/tests/validation/NEON/ArithmeticSubtraction.cpp
+++ b/tests/validation/NEON/ArithmeticSubtraction.cpp
@@ -107,7 +107,7 @@ void validate_configuration(const Tensor &src1, const Tensor &src2, Tensor &dst,
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/NEON/BitwiseAnd.cpp b/tests/validation/NEON/BitwiseAnd.cpp
index eb4090fa31..3dcad6fff7 100644
--- a/tests/validation/NEON/BitwiseAnd.cpp
+++ b/tests/validation/NEON/BitwiseAnd.cpp
@@ -166,7 +166,7 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/NEON/BitwiseNot.cpp b/tests/validation/NEON/BitwiseNot.cpp
index 590d806bd0..de58f550b2 100644
--- a/tests/validation/NEON/BitwiseNot.cpp
+++ b/tests/validation/NEON/BitwiseNot.cpp
@@ -107,7 +107,7 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/BitwiseOr.cpp b/tests/validation/NEON/BitwiseOr.cpp
index 164b2fe299..95f77ee924 100644
--- a/tests/validation/NEON/BitwiseOr.cpp
+++ b/tests/validation/NEON/BitwiseOr.cpp
@@ -114,7 +114,7 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/NEON/BitwiseXor.cpp b/tests/validation/NEON/BitwiseXor.cpp
index eea03268d7..a9225e6afa 100644
--- a/tests/validation/NEON/BitwiseXor.cpp
+++ b/tests/validation/NEON/BitwiseXor.cpp
@@ -114,7 +114,7 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/NEON/Box3x3.cpp b/tests/validation/NEON/Box3x3.cpp
index 6c9c3b29d8..b2a66cde30 100644
--- a/tests/validation/NEON/Box3x3.cpp
+++ b/tests/validation/NEON/Box3x3.cpp
@@ -112,15 +112,15 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
PaddingCalculator calculator(shape.x(), 8);
calculator.set_border_size(1);
- const PaddingSize write_padding(0, calculator.required_padding(), 0, 0);
+ const PaddingSize dst_padding = calculator.required_padding();
calculator.set_accessed_elements(16);
calculator.set_access_offset(-1);
- const PaddingSize read_padding(0, calculator.required_padding(), 0, 0);
+ const PaddingSize src_padding = calculator.required_padding();
- validate(src.info()->padding(), read_padding);
- validate(dst.info()->padding(), write_padding);
+ validate(src.info()->padding(), src_padding);
+ validate(dst.info()->padding(), dst_padding);
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit"))
diff --git a/tests/validation/NEON/DepthConvert.cpp b/tests/validation/NEON/DepthConvert.cpp
index cabbf0e32d..f6ae1f1e78 100644
--- a/tests/validation/NEON/DepthConvert.cpp
+++ b/tests/validation/NEON/DepthConvert.cpp
@@ -116,7 +116,7 @@ void compute_configure_validate(const TensorShape &shape, DataType dt_in, DataTy
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/IntegralImage.cpp b/tests/validation/NEON/IntegralImage.cpp
index 59acbff56b..8789e464f5 100644
--- a/tests/validation/NEON/IntegralImage.cpp
+++ b/tests/validation/NEON/IntegralImage.cpp
@@ -108,9 +108,8 @@ BOOST_DATA_TEST_CASE(Configuration, SmallShapes() + LargeShapes(), shape)
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- PaddingCalculator calculator(shape.x(), 16);
- const PaddingSize src_padding(0, calculator.required_padding(), 0, 0);
- const PaddingSize dst_padding(1, calculator.required_padding(), 0, 1);
+ const PaddingSize src_padding = PaddingCalculator(shape.x(), 16).required_padding();
+ const PaddingSize dst_padding(1, src_padding.right, 0, 1);
validate(src.info()->padding(), src_padding);
validate(dst.info()->padding(), dst_padding);
diff --git a/tests/validation/NEON/MeanStdDev.cpp b/tests/validation/NEON/MeanStdDev.cpp
index 4804354551..7087749bc3 100644
--- a/tests/validation/NEON/MeanStdDev.cpp
+++ b/tests/validation/NEON/MeanStdDev.cpp
@@ -109,8 +109,7 @@ BOOST_DATA_TEST_CASE(Configuration, Small2DShapes() + Large2DShapes(), shape)
validate(src.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
- validate(src.info()->padding(), padding);
+ validate(src.info()->padding(), PaddingCalculator(shape.x(), 16).required_padding());
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit"))
diff --git a/tests/validation/NEON/PixelWiseMultiplication.cpp b/tests/validation/NEON/PixelWiseMultiplication.cpp
index b16e7fe020..fd61c72f22 100644
--- a/tests/validation/NEON/PixelWiseMultiplication.cpp
+++ b/tests/validation/NEON/PixelWiseMultiplication.cpp
@@ -111,7 +111,7 @@ void validate_configuration(const Tensor &src1, const Tensor &src2, Tensor &dst,
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
validate(src1.info()->padding(), padding);
validate(src2.info()->padding(), padding);
validate(dst.info()->padding(), padding);
diff --git a/tests/validation/NEON/SoftmaxLayer.cpp b/tests/validation/NEON/SoftmaxLayer.cpp
index b04b0fe86a..519cac3f29 100644
--- a/tests/validation/NEON/SoftmaxLayer.cpp
+++ b/tests/validation/NEON/SoftmaxLayer.cpp
@@ -127,8 +127,8 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * CNNDataTyp
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- int step = 16 / arm_compute::data_size_from_type(dt);
- const PaddingSize padding(0, PaddingCalculator(shape.x(), step).required_padding(), 0, 0);
+ const int step = 16 / arm_compute::data_size_from_type(dt);
+ const PaddingSize padding = PaddingCalculator(shape.x(), step).required_padding();
validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}
diff --git a/tests/validation/NEON/Threshold.cpp b/tests/validation/NEON/Threshold.cpp
index b2a289f3b6..55f7889af3 100644
--- a/tests/validation/NEON/Threshold.cpp
+++ b/tests/validation/NEON/Threshold.cpp
@@ -99,24 +99,24 @@ BOOST_DATA_TEST_CASE(Configuration,
shape, thrshConf)
{
// Create tensors
- Tensor src1 = create_tensor(shape, DataType::U8);
- Tensor dst = create_tensor(shape, DataType::U8);
+ Tensor src = create_tensor(shape, DataType::U8);
+ Tensor dst = create_tensor(shape, DataType::U8);
- BOOST_TEST(src1.info()->is_resizable());
+ BOOST_TEST(src.info()->is_resizable());
BOOST_TEST(dst.info()->is_resizable());
// Create and configure function
NEThreshold thrsh;
- thrsh.configure(&src1, &dst, thrshConf.threshold, thrshConf.false_value, thrshConf.true_value, thrshConf.type, thrshConf.upper);
+ thrsh.configure(&src, &dst, thrshConf.threshold, thrshConf.false_value, thrshConf.true_value, thrshConf.type, thrshConf.upper);
// Validate valid region
const ValidRegion valid_region = shape_to_valid_region(shape);
- validate(src1.info()->valid_region(), valid_region);
+ validate(src.info()->valid_region(), valid_region);
validate(dst.info()->valid_region(), valid_region);
// Validate padding
- const PaddingSize padding(0, PaddingCalculator(shape.x(), 16).required_padding(), 0, 0);
- validate(src1.info()->padding(), padding);
+ const PaddingSize padding = PaddingCalculator(shape.x(), 16).required_padding();
+ validate(src.info()->padding(), padding);
validate(dst.info()->padding(), padding);
}