LLVM API Documentation
#include "llvm/ADT/APInt.h"#include "llvm/ADT/FoldingSet.h"#include "llvm/ADT/SmallString.h"#include "llvm/Support/Debug.h"#include "llvm/Support/MathExtras.h"#include "llvm/Support/raw_ostream.h"#include <cmath>#include <limits>#include <cstring>#include <cstdlib>
Go to the source code of this file.
Defines | |
| #define | DEBUG_TYPE "apint" |
| #define | COMPILE_TIME_ASSERT(cond) extern int CTAssert[(cond) ? 1 : -1] |
Functions | |
| static uint64_t * | getClearedMemory (unsigned numWords) |
| static uint64_t * | getMemory (unsigned numWords) |
| static bool | add_1 (uint64_t dest[], uint64_t x[], unsigned len, uint64_t y) |
| static bool | sub_1 (uint64_t x[], unsigned len, uint64_t y) |
| static bool | add (uint64_t *dest, const uint64_t *x, const uint64_t *y, unsigned len) |
| General addition of 64-bit integer arrays. | |
| static bool | sub (uint64_t *dest, const uint64_t *x, const uint64_t *y, unsigned len) |
| Generalized subtraction of 64-bit integer arrays. | |
| static uint64_t | mul_1 (uint64_t dest[], uint64_t x[], unsigned len, uint64_t y) |
| Multiply a multi-digit APInt by a single digit (64-bit) integer. | |
| static void | mul (uint64_t dest[], uint64_t x[], unsigned xlen, uint64_t y[], unsigned ylen) |
| Generalized multiplicate of integer arrays. | |
| static unsigned | countLeadingOnes_64 (uint64_t V, unsigned skip) |
| APInt | llvm::APIntOps::GreatestCommonDivisor (const APInt &Val1, const APInt &Val2) |
| Compute GCD of two APInt values. | |
| APInt | llvm::APIntOps::RoundDoubleToAPInt (double Double, unsigned width) |
| Converts the given double value into a APInt. | |
| static void | KnuthDiv (unsigned *u, unsigned *v, unsigned *q, unsigned *r, unsigned m, unsigned n) |
| COMPILE_TIME_ASSERT (integerPartWidth%2==0) | |
| static integerPart | lowBitMask (unsigned int bits) |
| static integerPart | lowHalf (integerPart part) |
| static integerPart | highHalf (integerPart part) |
| static unsigned int | partMSB (integerPart value) |
| static unsigned int | partLSB (integerPart value) |
| #define COMPILE_TIME_ASSERT | ( | cond | ) | extern int CTAssert[(cond) ? 1 : -1] |
| static bool add | ( | uint64_t * | dest, | |
| const uint64_t * | x, | |||
| const uint64_t * | y, | |||
| unsigned | len | |||
| ) | [static] |
General addition of 64-bit integer arrays.
add - This function adds the integer array x to the integer array Y and places the result in dest.
Definition at line 199 of file APInt.cpp.
Referenced by mergeBaseUpdateLoadStore().
| static bool add_1 | ( | uint64_t | dest[], | |
| uint64_t | x[], | |||
| unsigned | len, | |||
| uint64_t | y | |||
| ) | [static] |
add_1 - This function adds a single "digit" integer, y, to the multiple "digit" integer array, x[]. x[] is modified to reflect the addition and 1 is returned if there is a carry out, otherwise 0 is returned.
Definition at line 144 of file APInt.cpp.
Referenced by llvm::APInt::operator++().
| COMPILE_TIME_ASSERT | ( | integerPartWidth% | 2 = =0 |
) |
| static uint64_t* getClearedMemory | ( | unsigned | numWords | ) | [inline, static] |
A utility function for allocating memory, checking for allocation failures, and ensuring the contents are zeroed.
Definition at line 30 of file APInt.cpp.
References llvm::Intrinsic::memset.
Referenced by llvm::APInt::APInt(), llvm::APInt::trunc(), and llvm::APInt::zext().
| static uint64_t* getMemory | ( | unsigned | numWords | ) | [inline, static] |
A utility function for allocating memory and checking for allocation failure. The content is not zeroed.
Definition at line 39 of file APInt.cpp.
Referenced by llvm::APInt::operator*=(), and llvm::APInt::sext().
| static integerPart @630::highHalf | ( | integerPart | part | ) | [inline, static] |
Definition at line 2040 of file APInt.cpp.
References llvm::integerPartWidth.
Referenced by llvm::APInt::tcMultiplyPart().
| static void KnuthDiv | ( | unsigned * | u, | |
| unsigned * | v, | |||
| unsigned * | q, | |||
| unsigned * | r, | |||
| unsigned | m, | |||
| unsigned | n | |||
| ) | [static] |
Implementation of Knuth's Algorithm D (Division of nonnegative integers) from "Art of Computer Programming, Volume 2", section 4.3.1, p. 272. The variables here have the same names as in the algorithm. Comments explain the algorithm and any deviation from it.
Definition at line 1364 of file APInt.cpp.
References llvm::cerr(), llvm::CountLeadingZeros_32(), and DEBUG.
| static integerPart @630::lowBitMask | ( | unsigned int | bits | ) | [inline, static] |
Definition at line 2024 of file APInt.cpp.
References llvm::integerPartWidth.
Referenced by lowHalf(), and llvm::APInt::tcExtract().
| static integerPart @630::lowHalf | ( | integerPart | part | ) | [inline, static] |
Definition at line 2033 of file APInt.cpp.
References llvm::integerPartWidth, and lowBitMask().
Referenced by llvm::APInt::tcMultiplyPart().
| static void mul | ( | uint64_t | dest[], | |
| uint64_t | x[], | |||
| unsigned | xlen, | |||
| uint64_t | y[], | |||
| unsigned | ylen | |||
| ) | [static] |
Generalized multiplicate of integer arrays.
Multiplies integer array x by integer array y and stores the result into the integer array dest. Note that dest's size must be >= xlen + ylen.
Definition at line 287 of file APInt.cpp.
References mul_1().
Referenced by llvm::APInt::operator*=().
| static uint64_t mul_1 | ( | uint64_t | dest[], | |
| uint64_t | x[], | |||
| unsigned | len, | |||
| uint64_t | y | |||
| ) | [static] |
| static unsigned int @630::partLSB | ( | integerPart | value | ) | [static] |
Definition at line 2073 of file APInt.cpp.
References llvm::integerPartWidth.
Referenced by llvm::APInt::tcLSB().
| static unsigned int @630::partMSB | ( | integerPart | value | ) | [static] |
Definition at line 2048 of file APInt.cpp.
References llvm::integerPartWidth.
Referenced by llvm::APInt::tcMSB().
| static bool sub | ( | uint64_t * | dest, | |
| const uint64_t * | x, | |||
| const uint64_t * | y, | |||
| unsigned | len | |||
| ) | [static] |
Generalized subtraction of 64-bit integer arrays.
Subtracts the integer array y from the integer array x
Definition at line 226 of file APInt.cpp.
Referenced by mergeBaseUpdateLoadStore(), llvm::APInt::operator-(), and llvm::APInt::operator-=().
| static bool sub_1 | ( | uint64_t | x[], | |
| unsigned | len, | |||
| uint64_t | y | |||
| ) | [static] |
sub_1 - This function subtracts a single "digit" (64-bit word), y, from the multi-digit integer array, x[], propagating the borrowed 1 value until no further borrowing is neeeded or it runs out of "digits" in x. The result is 1 if "borrowing" exhausted the digits in x, or 0 if x was not exhausted. In other words, if y > x then this function returns 1, otherwise 0.
Definition at line 172 of file APInt.cpp.
References X.
Referenced by llvm::APInt::operator--().