From d0ae8b8ac8a371fd552c46d4b3be3db8628a5ade Mon Sep 17 00:00:00 2001 From: Moritz Pflanzer Date: Thu, 29 Jun 2017 14:51:57 +0100 Subject: COMPMID-417: Extract common toolchain support file The support file is needed as Android toolchains are missing some C++11 functions. It further includes functions that have been introduced in C++14 but which we already need. Eventually the support file might become unnecessary if the Android compilers improve and we switch to C++14. Change-Id: Ib5ec506f1a17c78149c315ab2096b901b852c180 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/79247 Reviewed-by: Georgios Pinitas Tested-by: Kaizen Reviewed-by: Pablo Tello --- tests/validation/FixedPoint.h | 3 ++- tests/validation/TensorOperations.h | 9 +++++---- tests/validation/UNIT/FixedPoint.cpp | 5 +++-- tests/validation/UNIT/Utils.cpp | 5 ++--- tests/validation/main.cpp | 5 +++-- 5 files changed, 15 insertions(+), 12 deletions(-) (limited to 'tests/validation') diff --git a/tests/validation/FixedPoint.h b/tests/validation/FixedPoint.h index fa99ff84c2..dca6e7ed2f 100644 --- a/tests/validation/FixedPoint.h +++ b/tests/validation/FixedPoint.h @@ -25,6 +25,7 @@ #define __ARM_COMPUTE_TEST_VALIDATION_FIXEDPOINT_H__ #include "Utils.h" +#include "support/ToolchainSupport.h" #include #include @@ -147,7 +148,7 @@ public: * @param[in] p Fixed point precision */ fixed_point(std::string str, uint8_t p) - : _value(detail::constant_expr::to_fixed(arm_compute::test::cpp11::stof(str), p)), _fixed_point_position(p) + : _value(detail::constant_expr::to_fixed(support::cpp11::stof(str), p)), _fixed_point_position(p) { assert(p > 0 && p < std::numeric_limits::digits); } diff --git a/tests/validation/TensorOperations.h b/tests/validation/TensorOperations.h index 5557cfc2df..4f7765613c 100644 --- a/tests/validation/TensorOperations.h +++ b/tests/validation/TensorOperations.h @@ -28,6 +28,7 @@ #include "Tensor.h" #include "Types.h" #include "Utils.h" +#include "support/ToolchainSupport.h" #include "FixedPoint.h" #include "Types.h" @@ -257,7 +258,7 @@ void apply_2d_spatial_filter(Coordinates coord, const Tensor &in, Tensor } coord.set(0, x); coord.set(1, y); - const double rounded_val = cpp11::trunc(val * static_cast(scale)); + const double rounded_val = support::cpp11::trunc(val * static_cast(scale)); out[coord2index(in.shape(), coord)] = saturate_cast(rounded_val); } } // namespace @@ -790,13 +791,13 @@ void pixel_wise_multiplication(const Tensor &in1, const Tensor &in2, Ten switch(rounding_policy) { case(RoundingPolicy::TO_ZERO): - rounded_val = cpp11::trunc(val); + rounded_val = support::cpp11::trunc(val); break; case(RoundingPolicy::TO_NEAREST_UP): - rounded_val = cpp11::round_half_up(val); + rounded_val = round_half_up(val); break; case(RoundingPolicy::TO_NEAREST_EVEN): - rounded_val = cpp11::round_half_even(val); + rounded_val = round_half_even(val); break; default: ARM_COMPUTE_ERROR("Unsupported rounding policy"); diff --git a/tests/validation/UNIT/FixedPoint.cpp b/tests/validation/UNIT/FixedPoint.cpp index 8042bb6da8..9206863ec6 100644 --- a/tests/validation/UNIT/FixedPoint.cpp +++ b/tests/validation/UNIT/FixedPoint.cpp @@ -25,6 +25,7 @@ #include "TypePrinter.h" #include "Utils.h" +#include "support/ToolchainSupport.h" #include "validation/Validation.h" #include "validation/ValidationUserConfiguration.h" @@ -52,7 +53,7 @@ BOOST_AUTO_TEST_SUITE(FixedPoint) BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::label("nightly")) BOOST_DATA_TEST_CASE(FixedPointQS8Inputs, boost::unit_test::data::make(func_names) * boost::unit_test::data::xrange(1, 7), func_name, frac_bits) { - const std::string base_file_name = user_config.path.get() + "/dumps/" + func_name + "_Q8." + cpp11::to_string(frac_bits); + const std::string base_file_name = user_config.path.get() + "/dumps/" + func_name + "_Q8." + support::cpp11::to_string(frac_bits); std::ifstream inputs_file{ base_file_name + ".in", std::ios::binary | std::ios::in }; BOOST_TEST_INFO(base_file_name + ".in"); @@ -84,7 +85,7 @@ BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::l BOOST_DATA_TEST_CASE(FixedPointQS8Outputs, (boost::unit_test::data::make(func_names) * boost::unit_test::data::xrange(1, 7)) ^ (boost::unit_test::data::make({ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 13, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 32, 67 })), func_name, frac_bits, expected_failures) { - const std::string base_file_name = user_config.path.get() + "/dumps/" + func_name + "_Q8." + cpp11::to_string(frac_bits); + const std::string base_file_name = user_config.path.get() + "/dumps/" + func_name + "_Q8." + support::cpp11::to_string(frac_bits); std::ifstream inputs_file{ base_file_name + ".in", std::ios::binary | std::ios::in }; std::ifstream reference_file{ base_file_name + ".out", std::ios::binary | std::ios::in }; diff --git a/tests/validation/UNIT/Utils.cpp b/tests/validation/UNIT/Utils.cpp index 7a09be52b5..69523a5620 100644 --- a/tests/validation/UNIT/Utils.cpp +++ b/tests/validation/UNIT/Utils.cpp @@ -32,7 +32,6 @@ using namespace arm_compute; using namespace arm_compute::test; -using namespace arm_compute::test::cpp11; using namespace arm_compute::test::validation; #ifndef DOXYGEN_SKIP_THIS @@ -43,14 +42,14 @@ BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::l BOOST_DATA_TEST_CASE(RoundHalfUp, boost::unit_test::data::make({ 1.f, 1.2f, 1.5f, 2.5f, 2.9f, -3.f, -3.5f, -3.8f, -4.3f, -4.5f }) ^ boost::unit_test::data::make({ 1.f, 1.f, 2.f, 3.f, 3.f, -3.f, -3.f, -4.f, -4.f, -4.f }), value, result) { - BOOST_TEST(cpp11::round_half_up(value) == result); + BOOST_TEST(round_half_up(value) == result); } BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::label("nightly")) BOOST_DATA_TEST_CASE(RoundHalfEven, boost::unit_test::data::make({ 1.f, 1.2f, 1.5f, 2.5f, 2.9f, -3.f, -3.5f, -3.8f, -4.3f, -4.5f }) ^ boost::unit_test::data::make({ 1.f, 1.f, 2.f, 2.f, 3.f, -3.f, -4.f, -4.f, -4.f, -4.f }), value, result) { - BOOST_TEST(cpp11::round_half_even(value) == result); + BOOST_TEST(round_half_even(value) == result); } BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::label("nightly")) diff --git a/tests/validation/main.cpp b/tests/validation/main.cpp index c89372637f..6ec6885159 100644 --- a/tests/validation/main.cpp +++ b/tests/validation/main.cpp @@ -28,6 +28,7 @@ #include "Utils.h" #include "ValidationProgramOptions.h" #include "ValidationUserConfiguration.h" +#include "support/ToolchainSupport.h" #include "arm_compute/runtime/Scheduler.h" @@ -55,11 +56,11 @@ struct GlobalFixture { if(user_config.seed.is_set()) { - library = cpp14::make_unique(user_config.path.get(), user_config.seed); + library = arm_compute::support::cpp14::make_unique(user_config.path.get(), user_config.seed); } else { - library = cpp14::make_unique(user_config.path.get()); + library = arm_compute::support::cpp14::make_unique(user_config.path.get()); } std::cout << "Seed: " << library->seed() << "\n"; -- cgit v1.2.1