|
template<typename T > |
unsigned | wpi::countTrailingZeros (T Val, ZeroBehavior ZB=ZB_Width) |
| Count number of 0's from the least significant bit to the most stopping at the first 1. More...
|
|
template<typename T > |
unsigned | wpi::countLeadingZeros (T Val, ZeroBehavior ZB=ZB_Width) |
| Count number of 0's from the most significant bit to the least stopping at the first 1. More...
|
|
template<typename T > |
T | wpi::findFirstSet (T Val, ZeroBehavior ZB=ZB_Max) |
| Get the index of the first set bit starting from the least significant bit. More...
|
|
template<typename T > |
T | wpi::maskTrailingOnes (unsigned N) |
| Create a bitmask with the N right-most bits set to 1, and all other bits set to 0. More...
|
|
template<typename T > |
T | wpi::maskLeadingOnes (unsigned N) |
| Create a bitmask with the N left-most bits set to 1, and all other bits set to 0. More...
|
|
template<typename T > |
T | wpi::maskTrailingZeros (unsigned N) |
| Create a bitmask with the N right-most bits set to 0, and all other bits set to 1. More...
|
|
template<typename T > |
T | wpi::maskLeadingZeros (unsigned N) |
| Create a bitmask with the N left-most bits set to 0, and all other bits set to 1. More...
|
|
template<typename T > |
T | wpi::findLastSet (T Val, ZeroBehavior ZB=ZB_Max) |
| Get the index of the last set bit starting from the least significant bit. More...
|
|
template<typename T > |
T | wpi::reverseBits (T Val) |
| Reverse the bits in Val . More...
|
|
constexpr uint32_t | wpi::Hi_32 (uint64_t Value) |
| Return the high 32 bits of a 64 bit value. More...
|
|
constexpr uint32_t | wpi::Lo_32 (uint64_t Value) |
| Return the low 32 bits of a 64 bit value. More...
|
|
constexpr uint64_t | wpi::Make_64 (uint32_t High, uint32_t Low) |
| Make a 64-bit integer from a high / low pair of 32-bit integers. More...
|
|
template<unsigned N> |
constexpr bool | wpi::isInt (int64_t x) |
| Checks if an integer fits into the given bit width. More...
|
|
template<> |
constexpr bool | wpi::isInt< 8 > (int64_t x) |
|
template<> |
constexpr bool | wpi::isInt< 16 > (int64_t x) |
|
template<> |
constexpr bool | wpi::isInt< 32 > (int64_t x) |
|
template<unsigned N, unsigned S> |
constexpr bool | wpi::isShiftedInt (int64_t x) |
| Checks if a signed integer is an N bit number shifted left by S. More...
|
|
template<unsigned N> |
constexpr std::enable_if_t<(N< 64), bool > | wpi::isUInt (uint64_t X) |
| Checks if an unsigned integer fits into the given bit width. More...
|
|
constexpr bool | wpi::isUInt (uint64_t) |
|
template<> |
constexpr bool | wpi::isUInt< 8 > (uint64_t x) |
|
template<> |
constexpr bool | wpi::isUInt< 16 > (uint64_t x) |
|
template<> |
constexpr bool | wpi::isUInt< 32 > (uint64_t x) |
|
template<unsigned N, unsigned S> |
constexpr bool | wpi::isShiftedUInt (uint64_t x) |
| Checks if a unsigned integer is an N bit number shifted left by S. More...
|
|
uint64_t | wpi::maxUIntN (uint64_t N) |
| Gets the maximum value for a N-bit unsigned integer. More...
|
|
int64_t | wpi::minIntN (int64_t N) |
| Gets the minimum value for a N-bit signed integer. More...
|
|
int64_t | wpi::maxIntN (int64_t N) |
| Gets the maximum value for a N-bit signed integer. More...
|
|
bool | wpi::isUIntN (unsigned N, uint64_t x) |
| Checks if an unsigned integer fits into the given (dynamic) bit width. More...
|
|
bool | wpi::isIntN (unsigned N, int64_t x) |
| Checks if an signed integer fits into the given (dynamic) bit width. More...
|
|
constexpr bool | wpi::isMask_32 (uint32_t Value) |
| Return true if the argument is a non-empty sequence of ones starting at the least significant bit with the remainder zero (32 bit version). More...
|
|
constexpr bool | wpi::isMask_64 (uint64_t Value) |
| Return true if the argument is a non-empty sequence of ones starting at the least significant bit with the remainder zero (64 bit version). More...
|
|
constexpr bool | wpi::isShiftedMask_32 (uint32_t Value) |
| Return true if the argument contains a non-empty sequence of ones with the remainder zero (32 bit version.) Ex. More...
|
|
constexpr bool | wpi::isShiftedMask_64 (uint64_t Value) |
| Return true if the argument contains a non-empty sequence of ones with the remainder zero (64 bit version.) More...
|
|
constexpr bool | wpi::isPowerOf2_32 (uint32_t Value) |
| Return true if the argument is a power of two > 0. More...
|
|
constexpr bool | wpi::isPowerOf2_64 (uint64_t Value) |
| Return true if the argument is a power of two > 0 (64 bit edition.) More...
|
|
template<typename T > |
unsigned | wpi::countLeadingOnes (T Value, ZeroBehavior ZB=ZB_Width) |
| Count the number of ones from the most significant bit to the first zero bit. More...
|
|
template<typename T > |
unsigned | wpi::countTrailingOnes (T Value, ZeroBehavior ZB=ZB_Width) |
| Count the number of ones from the least significant bit to the first zero bit. More...
|
|
template<typename T > |
unsigned | wpi::countPopulation (T Value) |
| Count the number of set bits in a value. More...
|
|
template<size_t kValue> |
constexpr size_t | wpi::CTLog2 () |
| Compile time Log2. More...
|
|
template<> |
constexpr size_t | wpi::CTLog2< 1 > () |
|
double | wpi::Log2 (double Value) |
| Return the log base 2 of the specified value. More...
|
|
unsigned | wpi::Log2_32 (uint32_t Value) |
| Return the floor log base 2 of the specified value, -1 if the value is zero. More...
|
|
unsigned | wpi::Log2_64 (uint64_t Value) |
| Return the floor log base 2 of the specified value, -1 if the value is zero. More...
|
|
unsigned | wpi::Log2_32_Ceil (uint32_t Value) |
| Return the ceil log base 2 of the specified value, 32 if the value is zero. More...
|
|
unsigned | wpi::Log2_64_Ceil (uint64_t Value) |
| Return the ceil log base 2 of the specified value, 64 if the value is zero. More...
|
|
template<typename T > |
T | wpi::greatestCommonDivisor (T A, T B) |
| Return the greatest common divisor of the values using Euclid's algorithm. More...
|
|
uint64_t | wpi::GreatestCommonDivisor64 (uint64_t A, uint64_t B) |
|
double | wpi::BitsToDouble (uint64_t Bits) |
| This function takes a 64-bit integer and returns the bit equivalent double. More...
|
|
float | wpi::BitsToFloat (uint32_t Bits) |
| This function takes a 32-bit integer and returns the bit equivalent float. More...
|
|
uint64_t | wpi::DoubleToBits (double Double) |
| This function takes a double and returns the bit equivalent 64-bit integer. More...
|
|
uint32_t | wpi::FloatToBits (float Float) |
| This function takes a float and returns the bit equivalent 32-bit integer. More...
|
|
constexpr uint64_t | wpi::MinAlign (uint64_t A, uint64_t B) |
| A and B are either alignments or offsets. More...
|
|
uint64_t | wpi::NextPowerOf2 (uint64_t A) |
| Returns the next power of two (in 64-bits) that is strictly greater than A. More...
|
|
uint64_t | wpi::PowerOf2Floor (uint64_t A) |
| Returns the power of two which is less than or equal to the given value. More...
|
|
uint64_t | wpi::PowerOf2Ceil (uint64_t A) |
| Returns the power of two which is greater than or equal to the given value. More...
|
|
uint64_t | wpi::alignTo (uint64_t Value, uint64_t Align, uint64_t Skew=0) |
| Returns the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align . More...
|
|
template<uint64_t Align> |
constexpr uint64_t | wpi::alignTo (uint64_t Value) |
| Returns the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align . More...
|
|
uint64_t | wpi::divideCeil (uint64_t Numerator, uint64_t Denominator) |
| Returns the integer ceil(Numerator / Denominator). More...
|
|
uint64_t | wpi::divideNearest (uint64_t Numerator, uint64_t Denominator) |
| Returns the integer nearest(Numerator / Denominator). More...
|
|
uint64_t | wpi::alignDown (uint64_t Value, uint64_t Align, uint64_t Skew=0) |
| Returns the largest uint64_t less than or equal to Value and is Skew mod Align . More...
|
|
template<unsigned B> |
constexpr int32_t | wpi::SignExtend32 (uint32_t X) |
| Sign-extend the number in the bottom B bits of X to a 32-bit integer. More...
|
|
int32_t | wpi::SignExtend32 (uint32_t X, unsigned B) |
| Sign-extend the number in the bottom B bits of X to a 32-bit integer. More...
|
|
template<unsigned B> |
constexpr int64_t | wpi::SignExtend64 (uint64_t x) |
| Sign-extend the number in the bottom B bits of X to a 64-bit integer. More...
|
|
int64_t | wpi::SignExtend64 (uint64_t X, unsigned B) |
| Sign-extend the number in the bottom B bits of X to a 64-bit integer. More...
|
|
template<typename T > |
std::enable_if_t< std::is_unsigned< T >::value, T > | wpi::AbsoluteDifference (T X, T Y) |
| Subtract two unsigned integers, X and Y, of type T and return the absolute value of the result. More...
|
|
template<typename T > |
std::enable_if_t< std::is_unsigned< T >::value, T > | wpi::SaturatingAdd (T X, T Y, bool *ResultOverflowed=nullptr) |
| Add two unsigned integers, X and Y, of type T. More...
|
|
template<typename T > |
std::enable_if_t< std::is_unsigned< T >::value, T > | wpi::SaturatingMultiply (T X, T Y, bool *ResultOverflowed=nullptr) |
| Multiply two unsigned integers, X and Y, of type T. More...
|
|
template<typename T > |
std::enable_if_t< std::is_unsigned< T >::value, T > | wpi::SaturatingMultiplyAdd (T X, T Y, T A, bool *ResultOverflowed=nullptr) |
| Multiply two unsigned integers, X and Y, and add the unsigned integer, A to the product. More...
|
|
template<typename T > |
std::enable_if_t< std::is_signed< T >::value, T > | wpi::AddOverflow (T X, T Y, T &Result) |
| Add two signed integers, computing the two's complement truncated result, returning true if overflow occured. More...
|
|
template<typename T > |
std::enable_if_t< std::is_signed< T >::value, T > | wpi::SubOverflow (T X, T Y, T &Result) |
| Subtract two signed integers, computing the two's complement truncated result, returning true if an overflow ocurred. More...
|
|
template<typename T > |
std::enable_if_t< std::is_signed< T >::value, T > | wpi::MulOverflow (T X, T Y, T &Result) |
| Multiply two signed integers, computing the two's complement truncated result, returning true if an overflow ocurred. More...
|
|
template<typename T > |
constexpr int | wpi::sgn (T val) |
|
template<typename T > |
constexpr T | wpi::Lerp (const T &startValue, const T &endValue, double t) |
| Linearly interpolates between two values. More...
|
|