LLVM 22.0.0git
APInt.cpp File Reference
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/bit.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Support/Alignment.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <cmath>
#include <optional>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "apint"
#define DEBUG_KNUTH(X)

Functions

static uint64_tgetClearedMemory (unsigned numWords)
 A utility function for allocating memory, checking for allocation failures, and ensuring the contents are zeroed.
static uint64_tgetMemory (unsigned numWords)
 A utility function for allocating memory and checking for allocation failure.
static unsigned getDigit (char cdigit, uint8_t radix)
 A utility function that converts a character to a digit.
static void tcComplement (APInt::WordType *dst, unsigned parts)
static unsigned rotateModulo (unsigned BitWidth, const APInt &rotateAmt)
static void KnuthDiv (uint32_t *u, uint32_t *v, uint32_t *q, uint32_t *r, unsigned m, unsigned n)
 Implementation of Knuth's Algorithm D (Division of nonnegative integers) from "Art of Computer Programming, Volume 2", section 4.3.1, p.
static APInt::WordType lowBitMask (unsigned bits)
static APInt::WordType lowHalf (APInt::WordType part)
 Returns the value of the lower half of PART.
static APInt::WordType highHalf (APInt::WordType part)
 Returns the value of the upper half of PART.

Macro Definition Documentation

◆ DEBUG_KNUTH

#define DEBUG_KNUTH ( X)
Value:
do {} while(false)

Referenced by KnuthDiv().

◆ DEBUG_TYPE

#define DEBUG_TYPE   "apint"

Definition at line 32 of file APInt.cpp.

Function Documentation

◆ getClearedMemory()

uint64_t * getClearedMemory ( unsigned numWords)
inlinestatic

A utility function for allocating memory, checking for allocation failures, and ensuring the contents are zeroed.

Definition at line 36 of file APInt.cpp.

◆ getDigit()

unsigned getDigit ( char cdigit,
uint8_t radix )
inlinestatic

A utility function that converts a character to a digit.

Definition at line 47 of file APInt.cpp.

◆ getMemory()

uint64_t * getMemory ( unsigned numWords)
inlinestatic

A utility function for allocating memory and checking for allocation failure.

The content is not zeroed.

Definition at line 42 of file APInt.cpp.

Referenced by llvm::APInt::operator*(), llvm::APInt::sext(), llvm::APInt::trunc(), and llvm::APInt::zext().

◆ highHalf()

APInt::WordType highHalf ( APInt::WordType part)
inlinestatic

Returns the value of the upper half of PART.

Definition at line 2334 of file APInt.cpp.

References llvm::APInt::APINT_BITS_PER_WORD.

Referenced by llvm::APInt::tcMultiplyPart().

◆ KnuthDiv()

void KnuthDiv ( uint32_t * u,
uint32_t * v,
uint32_t * q,
uint32_t * 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.

  1. The variables here have the same names as in the algorithm. Comments explain the algorithm and any deviation from it.

Definition at line 1290 of file APInt.cpp.

References assert(), llvm::countl_zero(), llvm::dbgs(), DEBUG_KNUTH, llvm::Hi_32(), isNeg(), llvm::Lo_32(), and llvm::Make_64().

◆ lowBitMask()

APInt::WordType lowBitMask ( unsigned bits)
inlinestatic

Definition at line 2323 of file APInt.cpp.

References llvm::APInt::APINT_BITS_PER_WORD, and assert().

Referenced by lowHalf(), and llvm::APInt::tcExtract().

◆ lowHalf()

APInt::WordType lowHalf ( APInt::WordType part)
inlinestatic

Returns the value of the lower half of PART.

Definition at line 2329 of file APInt.cpp.

References llvm::APInt::APINT_BITS_PER_WORD, and lowBitMask().

Referenced by llvm::APInt::tcMultiplyPart().

◆ rotateModulo()

◆ tcComplement()

void tcComplement ( APInt::WordType * dst,
unsigned parts )
static

Definition at line 367 of file APInt.cpp.

Referenced by llvm::APInt::tcNegate().