LLVM 20.0.0git
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
APFloat.h File Reference

This file declares a class to represent arbitrary precision floating point values and provide a variety of arithmetic operations on them. More...

#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/FloatingPointMode.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/float128.h"
#include <memory>

Go to the source code of this file.

Classes

struct  llvm::APFloatBase
 A self-contained host- and target-independent arbitrary-precision floating-point software implementation. More...
 
class  llvm::detail::IEEEFloat
 
class  llvm::detail::DoubleAPFloat
 
class  llvm::APFloat
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
namespace  llvm::detail
 These are wrappers over isa* function that allow them to be used in generic algorithms such as llvm:all_of, llvm::none_of, etc.
 

Macros

#define APFLOAT_DISPATCH_ON_SEMANTICS(METHOD_CALL)
 

Typedefs

using llvm::detail::integerPart = APFloatBase::integerPart
 
using llvm::detail::uninitializedTag = APFloatBase::uninitializedTag
 
using llvm::detail::roundingMode = APFloatBase::roundingMode
 
using llvm::detail::opStatus = APFloatBase::opStatus
 
using llvm::detail::cmpResult = APFloatBase::cmpResult
 
using llvm::detail::fltCategory = APFloatBase::fltCategory
 
using llvm::detail::ExponentType = APFloatBase::ExponentType
 

Enumerations

enum  llvm::lostFraction { llvm::lfExactlyZero , llvm::lfLessThanHalf , llvm::lfExactlyHalf , llvm::lfMoreThanHalf }
 Enum that represents what fraction of the LSB truncated bits of an fp number represent. More...
 

Functions

hash_code llvm::detail::hash_value (const IEEEFloat &Arg)
 
int llvm::detail::ilogb (const IEEEFloat &Arg)
 
IEEEFloat llvm::detail::scalbn (IEEEFloat X, int Exp, roundingMode)
 
IEEEFloat llvm::detail::frexp (const IEEEFloat &Val, int &Exp, roundingMode RM)
 
hash_code llvm::detail::hash_value (const DoubleAPFloat &Arg)
 
DoubleAPFloat llvm::detail::scalbn (const DoubleAPFloat &Arg, int Exp, roundingMode RM)
 
DoubleAPFloat llvm::detail::frexp (const DoubleAPFloat &X, int &Exp, roundingMode)
 
hash_code llvm::hash_value (const APFloat &Arg)
 See friend declarations above.
 
APFloat llvm::scalbn (APFloat X, int Exp, APFloat::roundingMode RM)
 
APFloat llvm::frexp (const APFloat &X, int &Exp, APFloat::roundingMode RM)
 Equivalent of C standard library function.
 
APFloat llvm::abs (APFloat X)
 Returns the absolute value of the argument.
 
APFloat llvm::neg (APFloat X)
 Returns the negated value of the argument.
 
LLVM_READONLY APFloat llvm::minnum (const APFloat &A, const APFloat &B)
 Implements IEEE-754 2019 minimumNumber semantics.
 
LLVM_READONLY APFloat llvm::maxnum (const APFloat &A, const APFloat &B)
 Implements IEEE-754 2019 maximumNumber semantics.
 
LLVM_READONLY APFloat llvm::minimum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 minimum semantics.
 
LLVM_READONLY APFloat llvm::minimumnum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 minimumNumber semantics.
 
LLVM_READONLY APFloat llvm::maximum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 maximum semantics.
 
LLVM_READONLY APFloat llvm::maximumnum (const APFloat &A, const APFloat &B)
 Implements IEEE 754-2019 maximumNumber semantics.
 
raw_ostream & llvm::operator<< (raw_ostream &OS, const APFloat &V)
 

Variables

static constexpr uninitializedTag llvm::detail::uninitialized = APFloatBase::uninitialized
 
static constexpr roundingMode llvm::detail::rmNearestTiesToEven
 
static constexpr roundingMode llvm::detail::rmNearestTiesToAway
 
static constexpr roundingMode llvm::detail::rmTowardNegative = APFloatBase::rmTowardNegative
 
static constexpr roundingMode llvm::detail::rmTowardPositive = APFloatBase::rmTowardPositive
 
static constexpr roundingMode llvm::detail::rmTowardZero = APFloatBase::rmTowardZero
 
static constexpr unsigned llvm::detail::integerPartWidth = APFloatBase::integerPartWidth
 
static constexpr cmpResult llvm::detail::cmpEqual = APFloatBase::cmpEqual
 
static constexpr cmpResult llvm::detail::cmpLessThan = APFloatBase::cmpLessThan
 
static constexpr cmpResult llvm::detail::cmpGreaterThan = APFloatBase::cmpGreaterThan
 
static constexpr cmpResult llvm::detail::cmpUnordered = APFloatBase::cmpUnordered
 
static constexpr opStatus llvm::detail::opOK = APFloatBase::opOK
 
static constexpr opStatus llvm::detail::opInvalidOp = APFloatBase::opInvalidOp
 
static constexpr opStatus llvm::detail::opDivByZero = APFloatBase::opDivByZero
 
static constexpr opStatus llvm::detail::opOverflow = APFloatBase::opOverflow
 
static constexpr opStatus llvm::detail::opUnderflow = APFloatBase::opUnderflow
 
static constexpr opStatus llvm::detail::opInexact = APFloatBase::opInexact
 
static constexpr fltCategory llvm::detail::fcInfinity = APFloatBase::fcInfinity
 
static constexpr fltCategory llvm::detail::fcNaN = APFloatBase::fcNaN
 
static constexpr fltCategory llvm::detail::fcNormal = APFloatBase::fcNormal
 
static constexpr fltCategory llvm::detail::fcZero = APFloatBase::fcZero
 

Detailed Description

This file declares a class to represent arbitrary precision floating point values and provide a variety of arithmetic operations on them.

Definition in file APFloat.h.

Macro Definition Documentation

◆ APFLOAT_DISPATCH_ON_SEMANTICS

#define APFLOAT_DISPATCH_ON_SEMANTICS (   METHOD_CALL)
Value:
do { \
if (usesLayout<IEEEFloat>(getSemantics())) \
return U.IEEE.METHOD_CALL; \
if (usesLayout<DoubleAPFloat>(getSemantics())) \
return U.Double.METHOD_CALL; \
llvm_unreachable("Unexpected semantics"); \
} while (false)

Definition at line 25 of file APFloat.h.