mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
MathExtras: Return the result of find(First|Last)Set in the input type.
Otherwise ZB_Max returns a wrong result when sizeof(T) > sizeof(size_t). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182684 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c6af2432c8
commit
927d8dcb47
@ -177,7 +177,7 @@ inline std::size_t countLeadingZeros<uint64_t>(uint64_t Val, ZeroBehavior ZB) {
|
|||||||
/// valid arguments.
|
/// valid arguments.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
||||||
!std::numeric_limits<T>::is_signed, std::size_t>::type
|
!std::numeric_limits<T>::is_signed, T>::type
|
||||||
findFirstSet(T Val, ZeroBehavior ZB = ZB_Max) {
|
findFirstSet(T Val, ZeroBehavior ZB = ZB_Max) {
|
||||||
if (ZB == ZB_Max && Val == 0)
|
if (ZB == ZB_Max && Val == 0)
|
||||||
return std::numeric_limits<T>::max();
|
return std::numeric_limits<T>::max();
|
||||||
@ -188,7 +188,7 @@ findFirstSet(T Val, ZeroBehavior ZB = ZB_Max) {
|
|||||||
// Disable signed.
|
// Disable signed.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
||||||
std::numeric_limits<T>::is_signed, std::size_t>::type
|
std::numeric_limits<T>::is_signed, T>::type
|
||||||
findFirstSet(T Val, ZeroBehavior ZB = ZB_Max) LLVM_DELETED_FUNCTION;
|
findFirstSet(T Val, ZeroBehavior ZB = ZB_Max) LLVM_DELETED_FUNCTION;
|
||||||
|
|
||||||
/// \brief Get the index of the last set bit starting from the least
|
/// \brief Get the index of the last set bit starting from the least
|
||||||
@ -200,7 +200,7 @@ findFirstSet(T Val, ZeroBehavior ZB = ZB_Max) LLVM_DELETED_FUNCTION;
|
|||||||
/// valid arguments.
|
/// valid arguments.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
||||||
!std::numeric_limits<T>::is_signed, std::size_t>::type
|
!std::numeric_limits<T>::is_signed, T>::type
|
||||||
findLastSet(T Val, ZeroBehavior ZB = ZB_Max) {
|
findLastSet(T Val, ZeroBehavior ZB = ZB_Max) {
|
||||||
if (ZB == ZB_Max && Val == 0)
|
if (ZB == ZB_Max && Val == 0)
|
||||||
return std::numeric_limits<T>::max();
|
return std::numeric_limits<T>::max();
|
||||||
@ -214,7 +214,7 @@ findLastSet(T Val, ZeroBehavior ZB = ZB_Max) {
|
|||||||
// Disable signed.
|
// Disable signed.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
typename enable_if_c<std::numeric_limits<T>::is_integer &&
|
||||||
std::numeric_limits<T>::is_signed, std::size_t>::type
|
std::numeric_limits<T>::is_signed, T>::type
|
||||||
findLastSet(T Val, ZeroBehavior ZB = ZB_Max) LLVM_DELETED_FUNCTION;
|
findLastSet(T Val, ZeroBehavior ZB = ZB_Max) LLVM_DELETED_FUNCTION;
|
||||||
|
|
||||||
/// \brief Macro compressed bit reversal table for 256 bits.
|
/// \brief Macro compressed bit reversal table for 256 bits.
|
||||||
|
Loading…
Reference in New Issue
Block a user