From 8830c30355d2a0fa8e26d112b8f44acce44bc5ff Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Thu, 25 Apr 2024 20:51:18 +0300 Subject: [PATCH] Add support for the BOOST_UUID_REPORT_IMPLEMENTATION macro, which outputs the chosen .ipp implementation --- include/boost/uuid/detail/uuid_generic.ipp | 7 +++++++ include/boost/uuid/detail/uuid_uint128.ipp | 7 +++++++ include/boost/uuid/detail/uuid_x86.ipp | 18 ++++++++++++++++++ test/CMakeLists.txt | 8 ++++---- test/Jamfile.v2 | 10 ++++++---- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/include/boost/uuid/detail/uuid_generic.ipp b/include/boost/uuid/detail/uuid_generic.ipp index 2646cca..2098ce4 100644 --- a/include/boost/uuid/detail/uuid_generic.ipp +++ b/include/boost/uuid/detail/uuid_generic.ipp @@ -8,6 +8,13 @@ #include #include +#if defined(BOOST_UUID_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE( "Using uuid_generic.ipp" ) + +#endif + namespace boost { namespace uuids { diff --git a/include/boost/uuid/detail/uuid_uint128.ipp b/include/boost/uuid/detail/uuid_uint128.ipp index 8d4bc9e..82195e2 100644 --- a/include/boost/uuid/detail/uuid_uint128.ipp +++ b/include/boost/uuid/detail/uuid_uint128.ipp @@ -7,6 +7,13 @@ #include +#if defined(BOOST_UUID_REPORT_IMPLEMENTATION) + +#include +BOOST_PRAGMA_MESSAGE( "Using uuid_uint128.ipp" ) + +#endif + namespace boost { namespace uuids { diff --git a/include/boost/uuid/detail/uuid_x86.ipp b/include/boost/uuid/detail/uuid_x86.ipp index 1d5e3d7..be62afa 100644 --- a/include/boost/uuid/detail/uuid_x86.ipp +++ b/include/boost/uuid/detail/uuid_x86.ipp @@ -16,6 +16,24 @@ #include #include +#if defined(BOOST_UUID_REPORT_IMPLEMENTATION) +#include + +#if defined(BOOST_UUID_USE_AVX10_1) +BOOST_PRAGMA_MESSAGE( "Using uuid_x86.ipp, AVX10.1" ) + +#elif defined(BOOST_UUID_USE_SSE41) +BOOST_PRAGMA_MESSAGE( "Using uuid_x86.ipp, SSE4.1" ) + +#elif defined(BOOST_UUID_USE_SSE3) +BOOST_PRAGMA_MESSAGE( "Using uuid_x86.ipp, SSE3" ) + +#else +BOOST_PRAGMA_MESSAGE( "Using uuid_x86.ipp, SSE2" ) + +#endif +#endif // #if defined(BOOST_UUID_REPORT_IMPLEMENTATION) + // MSVC does not always have immintrin.h (at least, not up to MSVC 10), so include the appropriate header for each instruction set #if defined(BOOST_UUID_USE_AVX10_1) #include diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 377f1f9..d4f99d6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -13,12 +13,12 @@ find_package(Threads REQUIRED) set(BOOST_TEST_LINK_LIBRARIES Boost::uuid Boost::core) -boost_test(TYPE run SOURCES test_uuid.cpp LINK_LIBRARIES Boost::container_hash) -boost_test(TYPE run SOURCES test_uuid.cpp LINK_LIBRARIES Boost::container_hash COMPILE_DEFINITIONS BOOST_UUID_NO_SIMD=1 NAME test_uuid_no_simd) +boost_test(TYPE run SOURCES test_uuid.cpp LINK_LIBRARIES Boost::container_hash COMPILE_DEFINITIONS BOOST_UUID_REPORT_IMPLEMENTATION=1) +boost_test(TYPE run SOURCES test_uuid.cpp LINK_LIBRARIES Boost::container_hash COMPILE_DEFINITIONS BOOST_UUID_NO_SIMD=1 BOOST_UUID_REPORT_IMPLEMENTATION=1 NAME test_uuid_no_simd) boost_test(TYPE run SOURCES test_uuid_2.cpp) -boost_test(TYPE run SOURCES test_comparison.cpp) -boost_test(TYPE run SOURCES test_comparison.cpp COMPILE_DEFINITIONS BOOST_UUID_NO_SIMD=1 NAME test_comparison_no_simd) +boost_test(TYPE run SOURCES test_comparison.cpp COMPILE_DEFINITIONS BOOST_UUID_REPORT_IMPLEMENTATION=1) +boost_test(TYPE run SOURCES test_comparison.cpp COMPILE_DEFINITIONS BOOST_UUID_NO_SIMD=1 BOOST_UUID_REPORT_IMPLEMENTATION=1 NAME test_comparison_no_simd) boost_test(TYPE run SOURCES test_include1.cpp test_include2.cpp) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index f4fe389..bfb482e 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -64,14 +64,16 @@ run test_include1.cpp test_include2.cpp ; # main test -run test_uuid.cpp ; -run test_uuid.cpp : : : BOOST_UUID_NO_SIMD : test_uuid_no_simd ; +run test_uuid.cpp + : : : BOOST_UUID_REPORT_IMPLEMENTATION ; +run test_uuid.cpp : : : BOOST_UUID_NO_SIMD BOOST_UUID_REPORT_IMPLEMENTATION : test_uuid_no_simd ; run test_uuid_2.cpp ; # test comparison -run test_comparison.cpp ; -run test_comparison.cpp : : : BOOST_UUID_NO_SIMD : test_comparison_no_simd ; +run test_comparison.cpp + : : : BOOST_UUID_REPORT_IMPLEMENTATION ; +run test_comparison.cpp : : : BOOST_UUID_NO_SIMD BOOST_UUID_REPORT_IMPLEMENTATION : test_comparison_no_simd ; # test uuid_io.hpp