aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/Utils.h19
-rw-r--r--tests/validation/CL/Box3x3.cpp9
-rw-r--r--tests/validation/CL/Gaussian3x3.cpp9
-rw-r--r--tests/validation/CL/Gaussian5x5.cpp9
-rw-r--r--tests/validation/CL/NonLinearFilter.cpp18
-rw-r--r--tests/validation/CL/Sobel3x3.cpp21
-rw-r--r--tests/validation/CL/Sobel5x5.cpp21
-rw-r--r--tests/validation/NEON/Box3x3.cpp9
-rw-r--r--tests/validation/NEON/Gaussian3x3.cpp9
-rw-r--r--tests/validation/NEON/Gaussian5x5.cpp9
-rw-r--r--tests/validation/NEON/NonLinearFilter.cpp18
-rw-r--r--tests/validation/NEON/Sobel3x3.cpp21
-rw-r--r--tests/validation/NEON/Sobel5x5.cpp21
-rw-r--r--tests/validation/TensorOperations.h8
14 files changed, 68 insertions, 133 deletions
diff --git a/tests/Utils.h b/tests/Utils.h
index 219cbd0368..a6181b3c78 100644
--- a/tests/Utils.h
+++ b/tests/Utils.h
@@ -475,25 +475,6 @@ inline ValidRegion shape_to_valid_region(TensorShape shape, bool border_undefine
return ValidRegion(std::move(anchor), std::move(shape));
}
-/** Create a valid region covering the tensor shape with UNDEFINED border mode and specified border size.
- *
- * @param[in] shape Shape used as size of the valid region.
- * @param[in] border_size Border size used to specify the region to exclude.
- *
- * @return A valid region starting at (@p border_size.left, @p border_size.top, ...) with reduced size of @p shape.
- */
-inline ValidRegion shape_to_valid_region_undefined_border(TensorShape shape, BorderSize border_size)
-{
- ARM_COMPUTE_ERROR_ON(shape.num_dimensions() < 2);
- Coordinates anchor;
- anchor.set(std::max<int>(0, shape.num_dimensions() - 1), 0);
- anchor.set(0, border_size.left);
- anchor.set(1, border_size.top);
- shape.set(0, shape.x() - border_size.left - border_size.right);
- shape.set(1, shape.y() - border_size.top - border_size.bottom);
- return ValidRegion(std::move(anchor), shape);
-}
-
/** Write the value after casting the pointer according to @p data_type.
*
* @warning The type of the value must match the specified data type.
diff --git a/tests/validation/CL/Box3x3.cpp b/tests/validation/CL/Box3x3.cpp
index fa604533d7..9c3db9f2fe 100644
--- a/tests/validation/CL/Box3x3.cpp
+++ b/tests/validation/CL/Box3x3.cpp
@@ -51,6 +51,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 3; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute CL box3x3 filter.
*
* @param[in] shape Shape of the input and output tensors.
@@ -106,7 +109,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1));
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -140,7 +143,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_box3x3(shape, border_mode, border_value);
// Validate output
- validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("nightly"))
@@ -157,7 +160,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_box3x3(shape, border_mode, border_value);
// Validate output
- validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/validation/CL/Gaussian3x3.cpp b/tests/validation/CL/Gaussian3x3.cpp
index 5bf830b10d..2a526e8417 100644
--- a/tests/validation/CL/Gaussian3x3.cpp
+++ b/tests/validation/CL/Gaussian3x3.cpp
@@ -51,6 +51,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 3; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute CL gaussian3x3 filter.
*
* @param[in] shape Shape of the input and output tensors.
@@ -106,7 +109,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1));
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -140,7 +143,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian3x3(shape, border_mode, border_value);
// Validate output
- validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("nightly"))
@@ -157,7 +160,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian3x3(shape, border_mode, border_value);
// Validate output
- validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/validation/CL/Gaussian5x5.cpp b/tests/validation/CL/Gaussian5x5.cpp
index a13474bc58..b6a692ce04 100644
--- a/tests/validation/CL/Gaussian5x5.cpp
+++ b/tests/validation/CL/Gaussian5x5.cpp
@@ -51,6 +51,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 5; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute CL gaussian5x5 filter.
*
* @param[in] shape Shape of the input and output tensors.
@@ -106,7 +109,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(2));
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -140,7 +143,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian5x5(shape, border_mode, border_value);
// Validate output
- validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(2)));
+ validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("nightly"))
@@ -157,7 +160,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian5x5(shape, border_mode, border_value);
// Validate output
- validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(2)));
+ validate(CLAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/validation/CL/NonLinearFilter.cpp b/tests/validation/CL/NonLinearFilter.cpp
index 5288f951bf..4a487d6ed4 100644
--- a/tests/validation/CL/NonLinearFilter.cpp
+++ b/tests/validation/CL/NonLinearFilter.cpp
@@ -125,11 +125,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes())
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- ValidRegion dst_valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- dst_valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(half_mask_size));
- }
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(half_mask_size));
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -171,11 +167,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes()
RawTensor ref_dst = Reference::compute_reference_non_linear_filter(shape, function, mask_size, pattern, mask, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(static_cast<int>(mask_size / 2)));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(static_cast<int>(mask_size / 2)));
// Validate output
validate(CLAccessor(dst), ref_dst, valid_region);
@@ -202,11 +194,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes()
RawTensor ref_dst = Reference::compute_reference_non_linear_filter(shape, function, mask_size, pattern, mask, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(static_cast<int>(mask_size / 2)));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(static_cast<int>(mask_size / 2)));
// Validate output
validate(CLAccessor(dst), ref_dst, valid_region);
diff --git a/tests/validation/CL/Sobel3x3.cpp b/tests/validation/CL/Sobel3x3.cpp
index 382e296180..fbd7185a48 100644
--- a/tests/validation/CL/Sobel3x3.cpp
+++ b/tests/validation/CL/Sobel3x3.cpp
@@ -53,6 +53,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 3; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute CL Sobel 3x3 function.
*
* @param[in] shape Shape of the input and output tensors.
@@ -121,11 +124,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- ValidRegion dst_valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- dst_valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(1));
- }
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst_x.info()->valid_region(), dst_valid_region);
@@ -169,11 +168,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_3x3(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(1));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(CLAccessor(dst.first), ref_dst.first, valid_region);
@@ -200,11 +195,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_3x3(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(1));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(CLAccessor(dst.first), ref_dst.first, valid_region);
diff --git a/tests/validation/CL/Sobel5x5.cpp b/tests/validation/CL/Sobel5x5.cpp
index b653808701..263e57e43f 100644
--- a/tests/validation/CL/Sobel5x5.cpp
+++ b/tests/validation/CL/Sobel5x5.cpp
@@ -53,6 +53,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 5; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute CL Sobel 5x5 function.
*
* @param[in] shape Shape of the input and output tensors.
@@ -121,11 +124,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- ValidRegion dst_valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- dst_valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(2));
- }
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst_x.info()->valid_region(), dst_valid_region);
@@ -168,11 +167,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_5x5(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(2));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(CLAccessor(dst.first), ref_dst.first, valid_region);
@@ -199,11 +194,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_5x5(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(2));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(CLAccessor(dst.first), ref_dst.first, valid_region);
diff --git a/tests/validation/NEON/Box3x3.cpp b/tests/validation/NEON/Box3x3.cpp
index c05167682a..c673ff1be3 100644
--- a/tests/validation/NEON/Box3x3.cpp
+++ b/tests/validation/NEON/Box3x3.cpp
@@ -52,6 +52,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 3; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute Neon box3x3 filter.
*
* @param[in] shape Shape of the input and output tensors.
@@ -107,7 +110,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1));
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -141,7 +144,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_box3x3(shape, border_mode, border_value);
// Validate output
- validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("nightly"))
@@ -158,7 +161,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_box3x3(shape, border_mode, border_value);
// Validate output
- validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/validation/NEON/Gaussian3x3.cpp b/tests/validation/NEON/Gaussian3x3.cpp
index f33b63f919..b69df9ac24 100644
--- a/tests/validation/NEON/Gaussian3x3.cpp
+++ b/tests/validation/NEON/Gaussian3x3.cpp
@@ -52,6 +52,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 3; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute Neon gaussian3x3 filter.
*
* @param[in] shape Shape of the input and output tensors.
@@ -107,7 +110,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1));
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -141,7 +144,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian3x3(shape, border_mode, border_value);
// Validate output
- validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("nightly"))
@@ -158,7 +161,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian3x3(shape, border_mode, border_value);
// Validate output
- validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(1)));
+ validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/validation/NEON/Gaussian5x5.cpp b/tests/validation/NEON/Gaussian5x5.cpp
index a553078d6c..bb48961652 100644
--- a/tests/validation/NEON/Gaussian5x5.cpp
+++ b/tests/validation/NEON/Gaussian5x5.cpp
@@ -54,6 +54,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 5; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute Neon gaussian5x5 filter.
*
* @param[in] shape Shape of the input and output tensors.
@@ -109,7 +112,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(2));
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -143,7 +146,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian5x5(shape, border_mode, border_value);
// Validate output
- validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(2)));
+ validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_TEST_DECORATOR(*boost::unit_test::label("nightly"))
@@ -160,7 +163,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
RawTensor ref_dst = Reference::compute_reference_gaussian5x5(shape, border_mode, border_value);
// Validate output
- validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(2)));
+ validate(NEAccessor(dst), ref_dst, shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size));
}
BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/validation/NEON/NonLinearFilter.cpp b/tests/validation/NEON/NonLinearFilter.cpp
index 3b71eaa9c6..c5d5087d39 100644
--- a/tests/validation/NEON/NonLinearFilter.cpp
+++ b/tests/validation/NEON/NonLinearFilter.cpp
@@ -125,11 +125,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes())
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- ValidRegion dst_valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- dst_valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(half_mask_size));
- }
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(half_mask_size));
validate(src.info()->valid_region(), src_valid_region);
validate(dst.info()->valid_region(), dst_valid_region);
@@ -171,11 +167,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes()
RawTensor ref_dst = Reference::compute_reference_non_linear_filter(shape, function, mask_size, pattern, mask, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(static_cast<int>(mask_size / 2)));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(static_cast<int>(mask_size / 2)));
// Validate output
validate(NEAccessor(dst), ref_dst, valid_region);
@@ -202,11 +194,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes()
RawTensor ref_dst = Reference::compute_reference_non_linear_filter(shape, function, mask_size, pattern, mask, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(static_cast<int>(mask_size / 2)));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(static_cast<int>(mask_size / 2)));
// Validate output
validate(NEAccessor(dst), ref_dst, valid_region);
diff --git a/tests/validation/NEON/Sobel3x3.cpp b/tests/validation/NEON/Sobel3x3.cpp
index 8324614f0d..c6c58f1a37 100644
--- a/tests/validation/NEON/Sobel3x3.cpp
+++ b/tests/validation/NEON/Sobel3x3.cpp
@@ -52,6 +52,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 3; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute Neon Sobel 3x3 function.
*
* @param[in] shape Shape of the input and output tensors.
@@ -120,11 +123,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- ValidRegion dst_valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- dst_valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(1));
- }
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst_x.info()->valid_region(), dst_valid_region);
@@ -168,11 +167,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_3x3(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(1));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(NEAccessor(dst.first), ref_dst.first, valid_region);
@@ -199,11 +194,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_3x3(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(1));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(NEAccessor(dst.first), ref_dst.first, valid_region);
diff --git a/tests/validation/NEON/Sobel5x5.cpp b/tests/validation/NEON/Sobel5x5.cpp
index bb2d7baf79..195afa6922 100644
--- a/tests/validation/NEON/Sobel5x5.cpp
+++ b/tests/validation/NEON/Sobel5x5.cpp
@@ -52,6 +52,9 @@ using namespace arm_compute::test::validation;
namespace
{
+constexpr unsigned int filter_size = 5; /** Size of the kernel/filter in number of elements. */
+constexpr BorderSize border_size(filter_size / 2); /** Border size of the kernel/filter around its central element. */
+
/** Compute Neon Sobel 5x5 function.
*
* @param[in] shape Shape of the input and output tensors.
@@ -120,11 +123,7 @@ BOOST_DATA_TEST_CASE(Configuration, (SmallShapes() + LargeShapes()) * BorderMode
// Validate valid region
const ValidRegion src_valid_region = shape_to_valid_region(shape);
- ValidRegion dst_valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- dst_valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(2));
- }
+ const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
validate(src.info()->valid_region(), src_valid_region);
validate(dst_x.info()->valid_region(), dst_valid_region);
@@ -168,11 +167,7 @@ BOOST_DATA_TEST_CASE(RunSmall, SmallShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_5x5(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(2));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(NEAccessor(dst.first), ref_dst.first, valid_region);
@@ -199,11 +194,7 @@ BOOST_DATA_TEST_CASE(RunLarge, LargeShapes() * BorderModes(), shape, border_mode
std::pair<RawTensor, RawTensor> ref_dst = Reference::compute_reference_sobel_5x5(shape, border_mode, constant_border_value);
// Calculate valid region
- ValidRegion valid_region = shape_to_valid_region(shape);
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(shape, BorderSize(2));
- }
+ const ValidRegion valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, border_size);
// Validate output
validate(NEAccessor(dst.first), ref_dst.first, valid_region);
diff --git a/tests/validation/TensorOperations.h b/tests/validation/TensorOperations.h
index 843c52fec4..5557cfc2df 100644
--- a/tests/validation/TensorOperations.h
+++ b/tests/validation/TensorOperations.h
@@ -716,7 +716,7 @@ template <typename T>
void non_linear_filter(const Tensor<T> &in, Tensor<T> &out, NonLinearFilterFunction function, unsigned int mask_size,
MatrixPattern pattern, const uint8_t *mask, BorderMode border_mode, uint8_t constant_border_value)
{
- ARM_COMPUTE_ERROR_ON(MatrixPattern::OTHER == pattern && nullptr == mask);
+ ARM_COMPUTE_ERROR_ON(pattern == MatrixPattern::OTHER && mask == nullptr);
using intermediate_type = typename common_promoted_signed_type<T>::intermediate_type;
@@ -725,11 +725,7 @@ void non_linear_filter(const Tensor<T> &in, Tensor<T> &out, NonLinearFilterFunct
std::vector<intermediate_type> vals(sq_mask_size);
intermediate_type current_value = 0;
- ValidRegion valid_region = shape_to_valid_region(in.shape());
- if(border_mode == BorderMode::UNDEFINED)
- {
- valid_region = shape_to_valid_region_undefined_border(in.shape(), BorderSize(half_mask_size));
- }
+ const ValidRegion valid_region = shape_to_valid_region(in.shape(), border_mode == BorderMode::UNDEFINED, BorderSize(half_mask_size));
for(int element_idx = 0, count = 0, index = 0; element_idx < in.num_elements(); ++element_idx, count = 0, index = 0)
{