Fix ambiguous declarations for libc++, which treats __int128_t as integral. The issue was fixed in develop branch, but not in release. Upstream commit: https://github.com/ROCm/rocPRIM/commit/81f6073790dee8d310e5b68cf46aae4b797cc059 --- a/rocprim/include/rocprim/thread/radix_key_codec.hpp +++ b/rocprim/include/rocprim/thread/radix_key_codec.hpp @@ -78,6 +78,7 @@ struct radix_key_codec_integral struct radix_key_codec_integral< Key, @@ -104,6 +105,7 @@ struct radix_key_codec_integral< return static_cast(bit_key >> start) & mask; } }; +#endif template struct radix_key_codec_integral struct radix_key_codec_integral(bit_key >> start) & mask; } }; +#endif template struct radix_key_codec_floating @@ -225,6 +229,7 @@ struct radix_key_codec_base::type> {}; +#ifndef _LIBCPP_VERSION template struct radix_key_codec_base::value>::type> @@ -236,6 +241,7 @@ struct radix_key_codec_base::value>::type> : radix_key_codec_integral {}; +#endif template<> struct radix_key_codec_base --- a/test/rocprim/test_utils_data_generation.hpp +++ b/test/rocprim/test_utils_data_generation.hpp @@ -268,6 +268,7 @@ inline OutputIter segmented_generate_n(OutputIter it, size_t size, Generator&& g return it + size; } +#ifndef _LIBCPP_VERSION template inline auto generate_random_data_n(OutputIter it, size_t size, U min, V max, Generator&& gen) -> std::enable_if_t, __int128_t>::value, OutputIter> @@ -299,6 +300,7 @@ inline auto generate_random_data_n(OutputIter it, size_t size, U min, V max, Gen return segmented_generate_n(it, size, [&]() { return static_cast(distribution(gen)); }); } +#endif template inline auto generate_random_data_n(OutputIter it, size_t size, U min, V max, Generator&& gen)