LLVM  mainline
Classes | Namespaces | Defines | Enumerations | Functions | Variables
MathExtras.h File Reference
#include "llvm/Support/Compiler.h"
#include "llvm/Support/SwapByteOrder.h"
#include <cassert>
#include <cstring>
#include <type_traits>
Include dependency graph for MathExtras.h:

Go to the source code of this file.

Classes

struct  llvm::detail::TrailingZerosCounter< T, SizeOfT >
struct  llvm::detail::LeadingZerosCounter< T, SizeOfT >
struct  llvm::detail::PopulationCounter< T, SizeOfT >
struct  llvm::detail::PopulationCounter< T, 8 >

Namespaces

namespace  llvm
 

Compute iterated dominance frontiers using a linear time algorithm.


namespace  llvm::detail
 

Implementation details of the pass manager interfaces.


Defines

#define R2(n)   n, n + 2 * 64, n + 1 * 64, n + 3 * 64
#define R4(n)   R2(n), R2(n + 2 * 16), R2(n + 1 * 16), R2(n + 3 * 16)
#define R6(n)   R4(n), R4(n + 2 * 4), R4(n + 1 * 4), R4(n + 3 * 4)

Enumerations

enum  llvm::ZeroBehavior { llvm::ZB_Undefined, llvm::ZB_Max, llvm::ZB_Width }
 The behavior an operation has on an input of 0. More...

Functions

template<typename T >
std::size_t llvm::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.
template<typename T >
std::size_t llvm::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.
template<typename T >
T llvm::findFirstSet (T Val, ZeroBehavior ZB=ZB_Max)
 Get the index of the first set bit starting from the least significant bit.
template<typename T >
T llvm::findLastSet (T Val, ZeroBehavior ZB=ZB_Max)
 Get the index of the last set bit starting from the least significant bit.
template<typename T >
T llvm::reverseBits (T Val)
 Reverse the bits in Val.
uint32_t llvm::Hi_32 (uint64_t Value)
 Hi_32 - This function returns the high 32 bits of a 64 bit value.
uint32_t llvm::Lo_32 (uint64_t Value)
 Lo_32 - This function returns the low 32 bits of a 64 bit value.
uint64_t llvm::Make_64 (uint32_t High, uint32_t Low)
 Make_64 - This functions makes a 64-bit integer from a high / low pair of 32-bit integers.
template<unsigned N>
bool llvm::isInt (int64_t x)
 isInt - Checks if an integer fits into the given bit width.
template<>
bool llvm::isInt< 8 > (int64_t x)
template<>
bool llvm::isInt< 16 > (int64_t x)
template<>
bool llvm::isInt< 32 > (int64_t x)
template<unsigned N, unsigned S>
bool llvm::isShiftedInt (int64_t x)
 isShiftedInt<N,S> - Checks if a signed integer is an N bit number shifted left by S.
template<unsigned N>
bool llvm::isUInt (uint64_t x)
 isUInt - Checks if an unsigned integer fits into the given bit width.
template<>
bool llvm::isUInt< 8 > (uint64_t x)
template<>
bool llvm::isUInt< 16 > (uint64_t x)
template<>
bool llvm::isUInt< 32 > (uint64_t x)
template<unsigned N, unsigned S>
bool llvm::isShiftedUInt (uint64_t x)
 isShiftedUInt<N,S> - Checks if a unsigned integer is an N bit number shifted left by S.
bool llvm::isUIntN (unsigned N, uint64_t x)
 isUIntN - Checks if an unsigned integer fits into the given (dynamic) bit width.
bool llvm::isIntN (unsigned N, int64_t x)
 isIntN - Checks if an signed integer fits into the given (dynamic) bit width.
bool llvm::isMask_32 (uint32_t Value)
 isMask_32 - This function returns true if the argument is a non-empty sequence of ones starting at the least significant bit with the remainder zero (32 bit version).
bool llvm::isMask_64 (uint64_t Value)
 isMask_64 - This function returns true if the argument is a non-empty sequence of ones starting at the least significant bit with the remainder zero (64 bit version).
bool llvm::isShiftedMask_32 (uint32_t Value)
 isShiftedMask_32 - This function returns true if the argument contains a non-empty sequence of ones with the remainder zero (32 bit version.) Ex.
bool llvm::isShiftedMask_64 (uint64_t Value)
 isShiftedMask_64 - This function returns true if the argument contains a non-empty sequence of ones with the remainder zero (64 bit version.)
bool llvm::isPowerOf2_32 (uint32_t Value)
 isPowerOf2_32 - This function returns true if the argument is a power of two > 0.
bool llvm::isPowerOf2_64 (uint64_t Value)
 isPowerOf2_64 - This function returns true if the argument is a power of two > 0 (64 bit edition.)
uint16_t llvm::ByteSwap_16 (uint16_t Value)
 ByteSwap_16 - This function returns a byte-swapped representation of the 16-bit argument, Value.
uint32_t llvm::ByteSwap_32 (uint32_t Value)
 ByteSwap_32 - This function returns a byte-swapped representation of the 32-bit argument, Value.
uint64_t llvm::ByteSwap_64 (uint64_t Value)
 ByteSwap_64 - This function returns a byte-swapped representation of the 64-bit argument, Value.
template<typename T >
std::size_t llvm::countLeadingOnes (T Value, ZeroBehavior ZB=ZB_Width)
 Count the number of ones from the most significant bit to the first zero bit.
template<typename T >
std::size_t llvm::countTrailingOnes (T Value, ZeroBehavior ZB=ZB_Width)
 Count the number of ones from the least significant bit to the first zero bit.
template<typename T >
unsigned llvm::countPopulation (T Value)
 Count the number of set bits in a value.
double llvm::Log2 (double Value)
 Log2 - This function returns the log base 2 of the specified value.
unsigned llvm::Log2_32 (uint32_t Value)
 Log2_32 - This function returns the floor log base 2 of the specified value,.
unsigned llvm::Log2_64 (uint64_t Value)
 Log2_64 - This function returns the floor log base 2 of the specified value,.
unsigned llvm::Log2_32_Ceil (uint32_t Value)
 Log2_32_Ceil - This function returns the ceil log base 2 of the specified value, 32 if the value is zero.
unsigned llvm::Log2_64_Ceil (uint64_t Value)
 Log2_64_Ceil - This function returns the ceil log base 2 of the specified value, 64 if the value is zero.
uint64_t llvm::GreatestCommonDivisor64 (uint64_t A, uint64_t B)
 GreatestCommonDivisor64 - Return the greatest common divisor of the two values using Euclid's algorithm.
double llvm::BitsToDouble (uint64_t Bits)
 BitsToDouble - This function takes a 64-bit integer and returns the bit equivalent double.
float llvm::BitsToFloat (uint32_t Bits)
 BitsToFloat - This function takes a 32-bit integer and returns the bit equivalent float.
uint64_t llvm::DoubleToBits (double Double)
 DoubleToBits - This function takes a double and returns the bit equivalent 64-bit integer.
uint32_t llvm::FloatToBits (float Float)
 FloatToBits - This function takes a float and returns the bit equivalent 32-bit integer.
uint64_t llvm::MinAlign (uint64_t A, uint64_t B)
 MinAlign - A and B are either alignments or offsets.
uintptr_t llvm::alignAddr (void *Addr, size_t Alignment)
 Aligns Addr to Alignment bytes, rounding up.
size_t llvm::alignmentAdjustment (void *Ptr, size_t Alignment)
 Returns the necessary adjustment for aligning Ptr to Alignment bytes, rounding up.
uint64_t llvm::NextPowerOf2 (uint64_t A)
 NextPowerOf2 - Returns the next power of two (in 64-bits) that is strictly greater than A.
uint64_t llvm::PowerOf2Floor (uint64_t A)
 Returns the power of two which is less than or equal to the given value.
uint64_t llvm::RoundUpToAlignment (uint64_t Value, uint64_t Align)
 Returns the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align.
uint64_t llvm::OffsetToAlignment (uint64_t Value, uint64_t Align)
 Returns the offset to the next integer (mod 2**64) that is greater than or equal to Value and is a multiple of Align.
template<unsigned B>
int32_t llvm::SignExtend32 (uint32_t x)
 SignExtend32 - Sign extend B-bit number x to 32-bit int.
int32_t llvm::SignExtend32 (uint32_t X, unsigned B)
 Sign extend number in the bottom B bits of X to a 32-bit int.
template<unsigned B>
int64_t llvm::SignExtend64 (uint64_t x)
 SignExtend64 - Sign extend B-bit number x to 64-bit int.
int64_t llvm::SignExtend64 (uint64_t X, unsigned B)
 Sign extend number in the bottom B bits of X to a 64-bit int.

Variables

static const unsigned char llvm::BitReverseTable256 [256]
 Macro compressed bit reversal table for 256 bits.
const float llvm::huge_valf = HUGE_VALF

Define Documentation

#define R2 (   n)    n, n + 2 * 64, n + 1 * 64, n + 3 * 64
#define R4 (   n)    R2(n), R2(n + 2 * 16), R2(n + 1 * 16), R2(n + 3 * 16)
#define R6 (   n)    R4(n), R4(n + 2 * 4), R4(n + 1 * 4), R4(n + 3 * 4)