Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
393 changes: 198 additions & 195 deletions include/boost/decimal/decimal128_t.hpp

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion include/boost/decimal/detail/add_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ BOOST_DECIMAL_CUDA_CONSTEXPR auto add_impl(const T& lhs, const T& rhs) noexcept
}

template <typename ReturnType, typename T>
constexpr auto d128_add_impl_new(const T& lhs, const T& rhs) noexcept -> ReturnType
BOOST_DECIMAL_CUDA_CONSTEXPR auto d128_add_impl_new(const T& lhs, const T& rhs) noexcept -> ReturnType
{
using promoted_sig_type = u256;

Expand Down
2 changes: 1 addition & 1 deletion include/boost/decimal/detail/div_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ BOOST_DECIMAL_FORCE_INLINE BOOST_DECIMAL_CUDA_CONSTEXPR auto d64_generic_div_imp
}

template <typename T>
constexpr auto d128_generic_div_impl(const T& lhs, const T& rhs, T& q) noexcept -> void
BOOST_DECIMAL_CUDA_CONSTEXPR auto d128_generic_div_impl(const T& lhs, const T& rhs, T& q) noexcept -> void
{
bool sign {lhs.sign != rhs.sign};

Expand Down
18 changes: 9 additions & 9 deletions include/boost/decimal/detail/i256.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace detail {
namespace impl {

// This impl works regardless of intrinsics or otherwise
constexpr u256 u256_add_impl(const int128::uint128_t& lhs, const int128::uint128_t& rhs) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR u256 u256_add_impl(const int128::uint128_t& lhs, const int128::uint128_t& rhs) noexcept
{
u256 result;
std::uint64_t carry {};
Expand All @@ -39,7 +39,7 @@ constexpr u256 u256_add_impl(const int128::uint128_t& lhs, const int128::uint128

#if !defined(BOOST_DECIMAL_NO_CONSTEVAL_DETECTION) && defined(BOOST_DECIMAL_ADD_CARRY)

constexpr u256 u256_add(const int128::uint128_t& lhs, const int128::uint128_t& rhs) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR u256 u256_add(const int128::uint128_t& lhs, const int128::uint128_t& rhs) noexcept
{
if (BOOST_DECIMAL_IS_CONSTANT_EVALUATED(lhs))
{
Expand All @@ -58,7 +58,7 @@ constexpr u256 u256_add(const int128::uint128_t& lhs, const int128::uint128_t& r

#elif !defined(BOOST_DECIMAL_NO_CONSTEVAL_DETECTION) && defined(__GNUC__) && !defined(BOOST_DECIMAL_ADD_CARRY)

constexpr u256 u256_add(const int128::uint128_t& lhs, const int128::uint128_t& rhs) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR u256 u256_add(const int128::uint128_t& lhs, const int128::uint128_t& rhs) noexcept
{
if (BOOST_DECIMAL_IS_CONSTANT_EVALUATED(lhs))
{
Expand All @@ -79,7 +79,7 @@ constexpr u256 u256_add(const int128::uint128_t& lhs, const int128::uint128_t& r

namespace impl {

constexpr std::uint64_t sub_borrow_u64(const std::uint64_t borrow_in, const std::uint64_t a, const std::uint64_t b, std::uint64_t& result) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR std::uint64_t sub_borrow_u64(const std::uint64_t borrow_in, const std::uint64_t a, const std::uint64_t b, std::uint64_t& result) noexcept
{
const auto diff {a - b};
const auto b1 {static_cast<std::uint64_t>(a < b)};
Expand All @@ -89,7 +89,7 @@ constexpr std::uint64_t sub_borrow_u64(const std::uint64_t borrow_in, const std:
return borrow_out;
}

constexpr bool i256_sub_impl(const u256& a, const u256& b, u256& result) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR bool i256_sub_impl(const u256& a, const u256& b, u256& result) noexcept
{
if (a >= b)
{
Expand All @@ -114,7 +114,7 @@ constexpr bool i256_sub_impl(const u256& a, const u256& b, u256& result) noexcep

#if !defined(BOOST_DECIMAL_NO_CONSTEVAL_DETECTION) && defined(BOOST_DECIMAL_SUB_BORROW)

constexpr bool i256_sub(const u256& a, const u256& b, u256& res) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR bool i256_sub(const u256& a, const u256& b, u256& res) noexcept
{
if (BOOST_DECIMAL_IS_CONSTANT_EVALUATED(lhs))
{
Expand Down Expand Up @@ -153,7 +153,7 @@ constexpr bool i256_sub(const u256& a, const u256& b, u256& res) noexcept

#elif !defined(BOOST_DECIMAL_NO_CONSTEVAL_DETECTION) && defined(__GNUC__) && !defined(BOOST_DECIMAL_SUB_BORROW) && BOOST_DECIMAL_HAS_BUILTIN(__builtin_subcll)

constexpr bool i256_sub(const u256& a, const u256& b, u256& result) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR bool i256_sub(const u256& a, const u256& b, u256& result) noexcept
{
if (BOOST_DECIMAL_IS_CONSTANT_EVALUATED(lhs))
{
Expand Down Expand Up @@ -205,7 +205,7 @@ inline std::uint64_t subcll(const std::uint64_t a, const std::uint64_t b, const

} // namespace impl

constexpr bool i256_sub(const u256& a, const u256& b, u256& result) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR bool i256_sub(const u256& a, const u256& b, u256& result) noexcept
{
if (BOOST_DECIMAL_IS_CONSTANT_EVALUATED(lhs))
{
Expand Down Expand Up @@ -240,7 +240,7 @@ constexpr bool i256_sub(const u256& a, const u256& b, u256& result) noexcept

#else

constexpr bool i256_sub(const u256& a, const u256& b, u256& result) noexcept
BOOST_DECIMAL_CUDA_CONSTEXPR bool i256_sub(const u256& a, const u256& b, u256& result) noexcept
{
return impl::i256_sub_impl(a, b, result);
}
Expand Down
6 changes: 3 additions & 3 deletions include/boost/decimal/detail/mul_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ BOOST_DECIMAL_FORCE_INLINE BOOST_DECIMAL_CUDA_CONSTEXPR auto d64_mul_impl(T lhs_
template <typename ReturnType, BOOST_DECIMAL_INTEGRAL T1, BOOST_DECIMAL_INTEGRAL U1,
BOOST_DECIMAL_INTEGRAL T2, BOOST_DECIMAL_INTEGRAL U2>
BOOST_DECIMAL_FORCE_INLINE
constexpr auto d128_mul_impl(const T1& lhs_sig, const U1 lhs_exp, const bool lhs_sign,
BOOST_DECIMAL_CUDA_CONSTEXPR auto d128_mul_impl(const T1& lhs_sig, const U1 lhs_exp, const bool lhs_sign,
const T2& rhs_sig, const U2 rhs_exp, const bool rhs_sign) noexcept -> ReturnType
{
using sig_type = T1;
Expand Down Expand Up @@ -176,7 +176,7 @@ constexpr auto d128_mul_impl(const T1& lhs_sig, const U1 lhs_exp, const bool lhs
template <typename ReturnType, BOOST_DECIMAL_INTEGRAL T1, BOOST_DECIMAL_INTEGRAL U1,
BOOST_DECIMAL_INTEGRAL T2, BOOST_DECIMAL_INTEGRAL U2>
BOOST_DECIMAL_FORCE_INLINE
constexpr auto d128_fast_mul_impl(const T1& lhs_sig, const U1 lhs_exp, const bool lhs_sign,
BOOST_DECIMAL_CUDA_CONSTEXPR auto d128_fast_mul_impl(const T1& lhs_sig, const U1 lhs_exp, const bool lhs_sign,
const T2& rhs_sig, const U2 rhs_exp, const bool rhs_sign) noexcept -> ReturnType
{
const bool sign {lhs_sign != rhs_sign};
Expand All @@ -194,7 +194,7 @@ constexpr auto d128_fast_mul_impl(const T1& lhs_sig, const U1 lhs_exp, const boo
}

template <typename ReturnType>
BOOST_DECIMAL_FORCE_INLINE auto mul_impl(const decimal128_t_components& lhs, const decimal128_t_components& rhs) noexcept -> ReturnType
BOOST_DECIMAL_FORCE_INLINE BOOST_DECIMAL_CUDA_CONSTEXPR auto mul_impl(const decimal128_t_components& lhs, const decimal128_t_components& rhs) noexcept -> ReturnType
{
return d128_mul_impl<ReturnType>(lhs.sig, lhs.exp, lhs.sign,
rhs.sig, rhs.exp, rhs.sign);
Expand Down
Loading
Loading