LLVM 20.0.0git
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
llvm::APFloat Class Reference

#include "llvm/ADT/APFloat.h"

Inheritance diagram for llvm::APFloat:
Inheritance graph
[legend]

Public Member Functions

 APFloat (const fltSemantics &Semantics)
 
 APFloat (const fltSemantics &Semantics, StringRef S)
 
 APFloat (const fltSemantics &Semantics, integerPart I)
 
template<typename T , typename = std::enable_if_t<std::is_floating_point<T>::value>>
 APFloat (const fltSemantics &Semantics, T V)=delete
 
 APFloat (const fltSemantics &Semantics, uninitializedTag)
 
 APFloat (const fltSemantics &Semantics, const APInt &I)
 
 APFloat (double d)
 
 APFloat (float f)
 
 APFloat (const APFloat &RHS)=default
 
 APFloat (APFloat &&RHS)=default
 
 ~APFloat ()=default
 
bool needsCleanup () const
 
void Profile (FoldingSetNodeID &NID) const
 Used to insert APFloat objects, or objects that contain APFloat objects, into FoldingSets.
 
opStatus add (const APFloat &RHS, roundingMode RM)
 
opStatus subtract (const APFloat &RHS, roundingMode RM)
 
opStatus multiply (const APFloat &RHS, roundingMode RM)
 
opStatus divide (const APFloat &RHS, roundingMode RM)
 
opStatus remainder (const APFloat &RHS)
 
opStatus mod (const APFloat &RHS)
 
opStatus fusedMultiplyAdd (const APFloat &Multiplicand, const APFloat &Addend, roundingMode RM)
 
opStatus roundToIntegral (roundingMode RM)
 
opStatus next (bool nextDown)
 
APFloat operator- () const
 Negate an APFloat.
 
APFloat operator+ (const APFloat &RHS) const
 Add two APFloats, rounding ties to the nearest even.
 
APFloat operator- (const APFloat &RHS) const
 Subtract two APFloats, rounding ties to the nearest even.
 
APFloat operator* (const APFloat &RHS) const
 Multiply two APFloats, rounding ties to the nearest even.
 
APFloat operator/ (const APFloat &RHS) const
 Divide the first APFloat by the second, rounding ties to the nearest even.
 
void changeSign ()
 
void clearSign ()
 
void copySign (const APFloat &RHS)
 
APFloat makeQuiet () const
 Assuming this is an IEEE-754 NaN value, quiet its signaling bit.
 
opStatus convert (const fltSemantics &ToSemantics, roundingMode RM, bool *losesInfo)
 
opStatus convertToInteger (MutableArrayRef< integerPart > Input, unsigned int Width, bool IsSigned, roundingMode RM, bool *IsExact) const
 
opStatus convertToInteger (APSInt &Result, roundingMode RM, bool *IsExact) const
 
opStatus convertFromAPInt (const APInt &Input, bool IsSigned, roundingMode RM)
 
opStatus convertFromSignExtendedInteger (const integerPart *Input, unsigned int InputSize, bool IsSigned, roundingMode RM)
 
opStatus convertFromZeroExtendedInteger (const integerPart *Input, unsigned int InputSize, bool IsSigned, roundingMode RM)
 
Expected< opStatusconvertFromString (StringRef, roundingMode)
 
APInt bitcastToAPInt () const
 
double convertToDouble () const
 Converts this APFloat to host double value.
 
float convertToFloat () const
 Converts this APFloat to host float value.
 
bool operator== (const APFloat &RHS) const
 
bool operator!= (const APFloat &RHS) const
 
bool operator< (const APFloat &RHS) const
 
bool operator> (const APFloat &RHS) const
 
bool operator<= (const APFloat &RHS) const
 
bool operator>= (const APFloat &RHS) const
 
cmpResult compare (const APFloat &RHS) const
 
bool bitwiseIsEqual (const APFloat &RHS) const
 
bool isExactlyValue (double V) const
 We don't rely on operator== working on double values, as it returns true for things that are clearly not equal, like -0.0 and 0.0.
 
unsigned int convertToHexString (char *DST, unsigned int HexDigits, bool UpperCase, roundingMode RM) const
 
bool isZero () const
 
bool isInfinity () const
 
bool isNaN () const
 
bool isNegative () const
 
bool isDenormal () const
 
bool isSignaling () const
 
bool isNormal () const
 
bool isFinite () const
 
fltCategory getCategory () const
 
const fltSemanticsgetSemantics () const
 
bool isNonZero () const
 
bool isFiniteNonZero () const
 
bool isPosZero () const
 
bool isNegZero () const
 
bool isPosInfinity () const
 
bool isNegInfinity () const
 
bool isSmallest () const
 
bool isLargest () const
 
bool isInteger () const
 
bool isIEEE () const
 
bool isSmallestNormalized () const
 
FPClassTest classify () const
 Return the FPClassTest which will return true for the value.
 
APFloatoperator= (const APFloat &RHS)=default
 
APFloatoperator= (APFloat &&RHS)=default
 
void toString (SmallVectorImpl< char > &Str, unsigned FormatPrecision=0, unsigned FormatMaxPadding=3, bool TruncateZero=true) const
 
void print (raw_ostream &) const
 
void dump () const
 
bool getExactInverse (APFloat *inv) const
 
LLVM_READONLY int getExactLog2Abs () const
 
LLVM_READONLY int getExactLog2 () const
 

Static Public Member Functions

static APFloat getZero (const fltSemantics &Sem, bool Negative=false)
 Factory for Positive and Negative Zero.
 
static APFloat getOne (const fltSemantics &Sem, bool Negative=false)
 Factory for Positive and Negative One.
 
static APFloat getInf (const fltSemantics &Sem, bool Negative=false)
 Factory for Positive and Negative Infinity.
 
static APFloat getNaN (const fltSemantics &Sem, bool Negative=false, uint64_t payload=0)
 Factory for NaN values.
 
static APFloat getQNaN (const fltSemantics &Sem, bool Negative=false, const APInt *payload=nullptr)
 Factory for QNaN values.
 
static APFloat getSNaN (const fltSemantics &Sem, bool Negative=false, const APInt *payload=nullptr)
 Factory for SNaN values.
 
static APFloat getLargest (const fltSemantics &Sem, bool Negative=false)
 Returns the largest finite number in the given semantics.
 
static APFloat getSmallest (const fltSemantics &Sem, bool Negative=false)
 Returns the smallest (by magnitude) finite number in the given semantics.
 
static APFloat getSmallestNormalized (const fltSemantics &Sem, bool Negative=false)
 Returns the smallest (by magnitude) normalized finite number in the given semantics.
 
static APFloat getAllOnesValue (const fltSemantics &Semantics)
 Returns a float which is bitcasted from an all one value int.
 
static bool hasNanOrInf (const fltSemantics &Sem)
 
static APFloat copySign (APFloat Value, const APFloat &Sign)
 A static helper to produce a copy of an APFloat value with its sign copied from some other APFloat.
 
- Static Public Member Functions inherited from llvm::APFloatBase
static unsigned int semanticsPrecision (const fltSemantics &)
 
static ExponentType semanticsMinExponent (const fltSemantics &)
 
static ExponentType semanticsMaxExponent (const fltSemantics &)
 
static unsigned int semanticsSizeInBits (const fltSemantics &)
 
static unsigned int semanticsIntSizeInBits (const fltSemantics &, bool)
 
static bool isRepresentableAsNormalIn (const fltSemantics &Src, const fltSemantics &Dst)
 
static unsigned getSizeInBits (const fltSemantics &Sem)
 Returns the size of the floating point number (in bits) in the given semantics.
 
static const llvm::fltSemanticsEnumToSemantics (Semantics S)
 
static Semantics SemanticsToEnum (const llvm::fltSemantics &Sem)
 
static const fltSemanticsIEEEhalf () LLVM_READNONE
 
static const fltSemanticsBFloat () LLVM_READNONE
 
static const fltSemanticsIEEEsingle () LLVM_READNONE
 
static const fltSemanticsIEEEdouble () LLVM_READNONE
 
static const fltSemanticsIEEEquad () LLVM_READNONE
 
static const fltSemanticsPPCDoubleDouble () LLVM_READNONE
 
static const fltSemanticsFloat8E5M2 () LLVM_READNONE
 
static const fltSemanticsFloat8E5M2FNUZ () LLVM_READNONE
 
static const fltSemanticsFloat8E4M3 () LLVM_READNONE
 
static const fltSemanticsFloat8E4M3FN () LLVM_READNONE
 
static const fltSemanticsFloat8E4M3FNUZ () LLVM_READNONE
 
static const fltSemanticsFloat8E4M3B11FNUZ () LLVM_READNONE
 
static const fltSemanticsFloat8E3M4 () LLVM_READNONE
 
static const fltSemanticsFloatTF32 () LLVM_READNONE
 
static const fltSemanticsFloat6E3M2FN () LLVM_READNONE
 
static const fltSemanticsFloat6E2M3FN () LLVM_READNONE
 
static const fltSemanticsFloat4E2M1FN () LLVM_READNONE
 
static const fltSemanticsx87DoubleExtended () LLVM_READNONE
 
static const fltSemanticsBogus () LLVM_READNONE
 A Pseudo fltsemantic used to construct APFloats that cannot conflict with anything real.
 

Public Attributes

friend IEEEFloat
 
friend DoubleAPFloat
 

Friends

hash_code hash_value (const APFloat &Arg)
 See friend declarations above.
 
int ilogb (const APFloat &Arg)
 
APFloat scalbn (APFloat X, int Exp, roundingMode RM)
 
APFloat frexp (const APFloat &X, int &Exp, roundingMode RM)
 

Additional Inherited Members

- Public Types inherited from llvm::APFloatBase
enum  cmpResult { cmpLessThan , cmpEqual , cmpGreaterThan , cmpUnordered }
 IEEE-754R 5.11: Floating Point Comparison Relations. More...
 
enum  opStatus {
  opOK = 0x00 , opInvalidOp = 0x01 , opDivByZero = 0x02 , opOverflow = 0x04 ,
  opUnderflow = 0x08 , opInexact = 0x10
}
 IEEE-754R 7: Default exception handling. More...
 
enum  fltCategory { fcInfinity , fcNaN , fcNormal , fcZero }
 Category of internally-represented number. More...
 
enum  uninitializedTag { uninitialized }
 Convenience enum used to construct an uninitialized APFloat. More...
 
enum  IlogbErrorKinds { IEK_Zero = INT_MIN + 1 , IEK_NaN = INT_MIN , IEK_Inf = INT_MAX }
 Enumeration of ilogb error results. More...
 
typedef APInt::WordType integerPart
 
typedef int32_t ExponentType
 A signed type to represent a floating point numbers unbiased exponent.
 
using roundingMode = llvm::RoundingMode
 IEEE-754R 4.3: Rounding-direction attributes.
 
enum  Semantics {
  S_IEEEhalf , S_BFloat , S_IEEEsingle , S_IEEEdouble ,
  S_IEEEquad , S_PPCDoubleDouble , S_Float8E5M2 , S_Float8E5M2FNUZ ,
  S_Float8E4M3 , S_Float8E4M3FN , S_Float8E4M3FNUZ , S_Float8E4M3B11FNUZ ,
  S_Float8E3M4 , S_FloatTF32 , S_Float6E3M2FN , S_Float6E2M3FN ,
  S_Float4E2M1FN , S_x87DoubleExtended , S_MaxSemantics = S_x87DoubleExtended
}
 
- Static Public Attributes inherited from llvm::APFloatBase
static constexpr unsigned integerPartWidth = APInt::APINT_BITS_PER_WORD
 
static constexpr roundingMode rmNearestTiesToEven
 
static constexpr roundingMode rmTowardPositive = RoundingMode::TowardPositive
 
static constexpr roundingMode rmTowardNegative = RoundingMode::TowardNegative
 
static constexpr roundingMode rmTowardZero = RoundingMode::TowardZero
 
static constexpr roundingMode rmNearestTiesToAway
 

Detailed Description

Definition at line 817 of file APFloat.h.

Constructor & Destructor Documentation

◆ APFloat() [1/10]

llvm::APFloat::APFloat ( const fltSemantics Semantics)
inline

Definition at line 972 of file APFloat.h.

◆ APFloat() [2/10]

llvm::APFloat::APFloat ( const fltSemantics Semantics,
StringRef  S 
)

◆ APFloat() [3/10]

llvm::APFloat::APFloat ( const fltSemantics Semantics,
integerPart  I 
)
inline

Definition at line 974 of file APFloat.h.

◆ APFloat() [4/10]

template<typename T , typename = std::enable_if_t<std::is_floating_point<T>::value>>
llvm::APFloat::APFloat ( const fltSemantics Semantics,
T  V 
)
delete

◆ APFloat() [5/10]

llvm::APFloat::APFloat ( const fltSemantics Semantics,
uninitializedTag   
)
inline

Definition at line 979 of file APFloat.h.

◆ APFloat() [6/10]

llvm::APFloat::APFloat ( const fltSemantics Semantics,
const APInt I 
)
inline

Definition at line 981 of file APFloat.h.

◆ APFloat() [7/10]

llvm::APFloat::APFloat ( double  d)
inlineexplicit

Definition at line 982 of file APFloat.h.

◆ APFloat() [8/10]

llvm::APFloat::APFloat ( float  f)
inlineexplicit

Definition at line 983 of file APFloat.h.

◆ APFloat() [9/10]

llvm::APFloat::APFloat ( const APFloat RHS)
default

◆ APFloat() [10/10]

llvm::APFloat::APFloat ( APFloat &&  RHS)
default

◆ ~APFloat()

llvm::APFloat::~APFloat ( )
default

Member Function Documentation

◆ add()

opStatus llvm::APFloat::add ( const APFloat RHS,
roundingMode  RM 
)
inline

◆ bitcastToAPInt()

APInt llvm::APFloat::bitcastToAPInt ( ) const
inline

Definition at line 1266 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and bitcastToAPInt().

Referenced by llvm::DwarfExpression::addConstantFP(), llvm::DwarfUnit::addConstantFPValue(), bitcastToAPInt(), computeKnownBitsFromOperator(), llvm::detail::DoubleAPFloat::convertFromAPInt(), llvm::detail::DoubleAPFloat::convertFromSignExtendedInteger(), llvm::detail::DoubleAPFloat::convertFromString(), llvm::detail::DoubleAPFloat::convertFromZeroExtendedInteger(), convertIntToDoubleImm(), llvm::convertToNonDenormSingle(), llvm::detail::DoubleAPFloat::divide(), emitGlobalConstantFP(), llvm::TargetLowering::expandIS_FPCLASS(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), llvm::detail::DoubleAPFloat::fusedMultiplyAdd(), llvm::generateSpecConstantInst(), llvm::ExecutionEngine::getConstantValue(), llvm::detail::DoubleAPFloat::getExactInverse(), llvm::getExpressionForConstant(), llvm::AArch64_AM::getFP16Imm(), llvm::ARM_AM::getFP16Imm(), llvm::ARM_AM::getFP32FP16Imm(), llvm::AArch64_AM::getFP32Imm(), llvm::ARM_AM::getFP32Imm(), llvm::AArch64_AM::getFP64Imm(), llvm::ARM_AM::getFP64Imm(), llvm::RISCVLoadFPImm::getLoadFPImm(), llvm::SPIRVGlobalRegistry::getOrCreateConstFP(), llvm::HexagonLowerToMC(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::LegalizerHelper::lowerISFPCLASS(), llvm::CombinerHelper::matchCombineUnmergeConstant(), llvm::detail::DoubleAPFloat::mod(), llvm::detail::DoubleAPFloat::next(), llvm::NVPTXFloatMCExpr::printImpl(), Profile(), llvm::detail::DoubleAPFloat::remainder(), llvm::detail::DoubleAPFloat::roundToIntegral(), llvm::RISCVDAGToDAGISel::Select(), llvm::RISCVDAGToDAGISel::selectFPImm(), llvm::stableHashValue(), llvm::LegalizerHelper::widenScalar(), and WriteAPFloatInternal().

◆ bitwiseIsEqual()

bool llvm::APFloat::bitwiseIsEqual ( const APFloat RHS) const
inline

Definition at line 1325 of file APFloat.h.

References getSemantics(), llvm_unreachable, and RHS.

Referenced by llvm::ConstantFP::isExactlyValue(), isExactlyValue(), and isInv2Pi().

◆ changeSign()

void llvm::APFloat::changeSign ( )
inline

◆ classify()

FPClassTest llvm::APFloat::classify ( ) const

◆ clearSign()

void llvm::APFloat::clearSign ( )
inline

◆ compare()

cmpResult llvm::APFloat::compare ( const APFloat RHS) const
inline

◆ convert()

APFloat::opStatus llvm::APFloat::convert ( const fltSemantics ToSemantics,
roundingMode  RM,
bool losesInfo 
)

◆ convertFromAPInt()

opStatus llvm::APFloat::convertFromAPInt ( const APInt Input,
bool  IsSigned,
roundingMode  RM 
)
inline

◆ convertFromSignExtendedInteger()

opStatus llvm::APFloat::convertFromSignExtendedInteger ( const integerPart Input,
unsigned int  InputSize,
bool  IsSigned,
roundingMode  RM 
)
inline

◆ convertFromString()

Expected< APFloat::opStatus > llvm::APFloat::convertFromString ( StringRef  Str,
roundingMode  RM 
)

◆ convertFromZeroExtendedInteger()

opStatus llvm::APFloat::convertFromZeroExtendedInteger ( const integerPart Input,
unsigned int  InputSize,
bool  IsSigned,
roundingMode  RM 
)
inline

◆ convertToDouble()

double llvm::APFloat::convertToDouble ( ) const

Converts this APFloat to host double value.

Precondition
The APFloat must be built using semantics, that can be represented by the host double type without loss of precision. It can be IEEEdouble and shorter semantics, like IEEEsingle and others.

Definition at line 5396 of file APFloat.cpp.

References assert(), convert(), llvm::detail::IEEEFloat::convertToDouble(), getSemantics(), llvm::APFloatBase::opInexact, llvm::APFloatBase::rmNearestTiesToEven, and llvm::semIEEEdouble.

Referenced by emitDebugValueComment(), LLVMConstRealGetDouble(), llvm::ARMAsmPrinter::lowerOperand(), and WriteAPFloatInternal().

◆ convertToFloat()

float llvm::APFloat::convertToFloat ( ) const

Converts this APFloat to host float value.

Precondition
The APFloat must be built using semantics, that can be represented by the host float type without loss of precision. It can be IEEEquad and shorter semantics, like IEEEdouble and others. Converts this APFloat to host float value.
The APFloat must be built using semantics, that can be represented by the host float type without loss of precision. It can be IEEEsingle and shorter semantics, like IEEEhalf.

Definition at line 5424 of file APFloat.cpp.

References assert(), convert(), llvm::detail::IEEEFloat::convertToFloat(), getSemantics(), llvm::APFloatBase::opInexact, llvm::APFloatBase::rmNearestTiesToEven, and llvm::semIEEEsingle.

Referenced by llvm::FPMathOperator::getFPAccuracy(), and llvm::SPIRVMCInstLower::lower().

◆ convertToHexString()

unsigned int llvm::APFloat::convertToHexString ( char DST,
unsigned int  HexDigits,
bool  UpperCase,
roundingMode  RM 
) const
inline

◆ convertToInteger() [1/2]

APFloat::opStatus llvm::APFloat::convertToInteger ( APSInt Result,
roundingMode  RM,
bool IsExact 
) const

◆ convertToInteger() [2/2]

opStatus llvm::APFloat::convertToInteger ( MutableArrayRef< integerPart Input,
unsigned int  Width,
bool  IsSigned,
roundingMode  RM,
bool IsExact 
) const
inline

◆ copySign() [1/2]

static APFloat llvm::APFloat::copySign ( APFloat  Value,
const APFloat Sign 
)
inlinestatic

A static helper to produce a copy of an APFloat value with its sign copied from some other APFloat.

Definition at line 1226 of file APFloat.h.

◆ copySign() [2/2]

void llvm::APFloat::copySign ( const APFloat RHS)
inline

Definition at line 1219 of file APFloat.h.

References changeSign(), isNegative(), and RHS.

Referenced by llvm::ConstantFoldFPBinOp(), and llvm::SelectionDAG::foldConstantFPMath().

◆ divide()

opStatus llvm::APFloat::divide ( const APFloat RHS,
roundingMode  RM 
)
inline

◆ dump()

LLVM_DUMP_METHOD void llvm::APFloat::dump ( ) const

Definition at line 5373 of file APFloat.cpp.

References llvm::dbgs(), and print().

◆ fusedMultiplyAdd()

opStatus llvm::APFloat::fusedMultiplyAdd ( const APFloat Multiplicand,
const APFloat Addend,
roundingMode  RM 
)
inline

◆ getAllOnesValue()

APFloat llvm::APFloat::getAllOnesValue ( const fltSemantics Semantics)
static

Returns a float which is bitcasted from an all one value int.

Parameters
Semantics- type float semantics

Definition at line 5362 of file APFloat.cpp.

References llvm::APInt::getAllOnes().

Referenced by llvm::Constant::getAllOnesValue(), and lowerShuffleAsBitMask().

◆ getCategory()

fltCategory llvm::APFloat::getCategory ( ) const
inline

Definition at line 1367 of file APFloat.h.

References llvm::detail::IEEEFloat::getCategory().

Referenced by isInfinity(), isNaN(), and isZero().

◆ getExactInverse()

bool llvm::APFloat::getExactInverse ( APFloat inv) const
inline

◆ getExactLog2()

LLVM_READONLY int llvm::APFloat::getExactLog2 ( ) const
inline

Definition at line 1409 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and getExactLog2().

Referenced by getExactLog2().

◆ getExactLog2Abs()

LLVM_READONLY int llvm::APFloat::getExactLog2Abs ( ) const
inline

Definition at line 1404 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and getExactLog2Abs().

Referenced by getExactLog2Abs().

◆ getInf()

static APFloat llvm::APFloat::getInf ( const fltSemantics Sem,
bool  Negative = false 
)
inlinestatic

◆ getLargest()

static APFloat llvm::APFloat::getLargest ( const fltSemantics Sem,
bool  Negative = false 
)
inlinestatic

◆ getNaN()

static APFloat llvm::APFloat::getNaN ( const fltSemantics Sem,
bool  Negative = false,
uint64_t  payload = 0 
)
inlinestatic

Factory for NaN values.

Parameters
Negative- True iff the NaN generated should be negative.
payload- The unspecified fill bits for creating the NaN, 0 by default. The value is truncated as necessary.

Definition at line 1021 of file APFloat.h.

References getQNaN().

Referenced by llvm::TargetLowering::expandFMINIMUM_FMAXIMUM(), llvm::SelectionDAG::foldConstantFPMath(), getIdentityValueForAtomicOp(), llvm::ConstantFP::getNaN(), and llvm::fuzzerop::makeConstantsWithType().

◆ getOne()

static APFloat llvm::APFloat::getOne ( const fltSemantics Sem,
bool  Negative = false 
)
inlinestatic

Factory for Positive and Negative One.

Parameters
NegativeTrue iff the number should be negative.

Definition at line 1003 of file APFloat.h.

◆ getQNaN()

static APFloat llvm::APFloat::getQNaN ( const fltSemantics Sem,
bool  Negative = false,
const APInt payload = nullptr 
)
inlinestatic

◆ getSemantics()

const fltSemantics & llvm::APFloat::getSemantics ( ) const
inline

◆ getSmallest()

static APFloat llvm::APFloat::getSmallest ( const fltSemantics Sem,
bool  Negative = false 
)
inlinestatic

Returns the smallest (by magnitude) finite number in the given semantics.

Might be denormalized, which implies a relative loss of precision.

Parameters
Negative- True iff the number should be negative

Definition at line 1060 of file APFloat.h.

References llvm::APFloatBase::uninitialized.

Referenced by llvm::fuzzerop::makeConstantsWithType().

◆ getSmallestNormalized()

static APFloat llvm::APFloat::getSmallestNormalized ( const fltSemantics Sem,
bool  Negative = false 
)
inlinestatic

Returns the smallest (by magnitude) normalized finite number in the given semantics.

Parameters
Negative- True iff the number should be negative

Definition at line 1070 of file APFloat.h.

References llvm::APFloatBase::uninitialized.

Referenced by emitRsqIEEE1ULP(), llvm::TargetLowering::expandIS_FPCLASS(), llvm::AMDGPUTargetLowering::getIsLtSmallestNormal(), llvm::AMDGPULegalizerInfo::getScaledLogInput(), llvm::AMDGPUTargetLowering::getScaledLogInput(), llvm::TargetLowering::getSqrtInputTest(), and llvm::InstCombinerImpl::visitFCmpInst().

◆ getSNaN()

static APFloat llvm::APFloat::getSNaN ( const fltSemantics Sem,
bool  Negative = false,
const APInt payload = nullptr 
)
inlinestatic

Factory for SNaN values.

Definition at line 1040 of file APFloat.h.

References llvm::APFloatBase::uninitialized.

Referenced by llvm::ConstantFP::getSNaN(), and WriteAPFloatInternal().

◆ getZero()

static APFloat llvm::APFloat::getZero ( const fltSemantics Sem,
bool  Negative = false 
)
inlinestatic

◆ hasNanOrInf()

static bool llvm::APFloat::hasNanOrInf ( const fltSemantics Sem)
inlinestatic

◆ isDenormal()

bool llvm::APFloat::isDenormal ( ) const
inline

◆ isExactlyValue()

bool llvm::APFloat::isExactlyValue ( double  V) const
inline

We don't rely on operator== working on double values, as it returns true for things that are clearly not equal, like -0.0 and 0.0.

As such, this method can be used to do an exact bit-for-bit comparison of two floating point values.

We leave the version with the double argument here because it's just so convenient to write "2.0" and the like. Without this function we'd have to duplicate its logic everywhere it's called.

Definition at line 1343 of file APFloat.h.

References bitwiseIsEqual(), convert(), getSemantics(), ignored(), and llvm::APFloatBase::rmNearestTiesToEven.

Referenced by llvm::SelectionDAG::simplifyFPBinop().

◆ isFinite()

bool llvm::APFloat::isFinite ( ) const
inline

Definition at line 1365 of file APFloat.h.

References isInfinity(), and isNaN().

Referenced by llvm::SelectionDAG::getNode(), isFiniteNonZero(), and matchFastFloatClamp().

◆ isFiniteNonZero()

bool llvm::APFloat::isFiniteNonZero ( ) const
inline

Definition at line 1370 of file APFloat.h.

References isFinite(), and isZero().

Referenced by isNormal().

◆ isIEEE()

bool llvm::APFloat::isIEEE ( ) const
inline

Definition at line 1378 of file APFloat.h.

References getSemantics().

◆ isInfinity()

bool llvm::APFloat::isInfinity ( ) const
inline

◆ isInteger()

bool llvm::APFloat::isInteger ( ) const
inline

Definition at line 1377 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and isInteger().

Referenced by isInteger(), and isKnownIntegral().

◆ isLargest()

bool llvm::APFloat::isLargest ( ) const
inline

Definition at line 1376 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and isLargest().

Referenced by isLargest().

◆ isNaN()

bool llvm::APFloat::isNaN ( ) const
inline

◆ isNegative()

bool llvm::APFloat::isNegative ( ) const
inline

◆ isNegInfinity()

bool llvm::APFloat::isNegInfinity ( ) const
inline

Definition at line 1374 of file APFloat.h.

References isInfinity(), and isNegative().

◆ isNegZero()

bool llvm::APFloat::isNegZero ( ) const
inline

◆ isNonZero()

bool llvm::APFloat::isNonZero ( ) const
inline

Definition at line 1369 of file APFloat.h.

References isZero().

◆ isNormal()

bool llvm::APFloat::isNormal ( ) const
inline

Definition at line 1364 of file APFloat.h.

References isDenormal(), and isFiniteNonZero().

Referenced by classify().

◆ isPosInfinity()

bool llvm::APFloat::isPosInfinity ( ) const
inline

Definition at line 1373 of file APFloat.h.

References isInfinity(), and isNegative().

◆ isPosZero()

bool llvm::APFloat::isPosZero ( ) const
inline

◆ isSignaling()

bool llvm::APFloat::isSignaling ( ) const
inline

Definition at line 1362 of file APFloat.h.

References llvm::detail::IEEEFloat::isSignaling().

Referenced by classify(), and WriteAPFloatInternal().

◆ isSmallest()

bool llvm::APFloat::isSmallest ( ) const
inline

Definition at line 1375 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and isSmallest().

Referenced by isSmallest().

◆ isSmallestNormalized()

bool llvm::APFloat::isSmallestNormalized ( ) const
inline

◆ isZero()

bool llvm::APFloat::isZero ( ) const
inline

◆ makeQuiet()

APFloat llvm::APFloat::makeQuiet ( ) const
inline

Assuming this is an IEEE-754 NaN value, quiet its signaling bit.

This preserves the sign and payload bits.

Definition at line 1233 of file APFloat.h.

Referenced by llvm::GCNTTIImpl::instCombineIntrinsic().

◆ mod()

opStatus llvm::APFloat::mod ( const APFloat RHS)
inline

◆ multiply()

opStatus llvm::APFloat::multiply ( const APFloat RHS,
roundingMode  RM 
)
inline

◆ needsCleanup()

bool llvm::APFloat::needsCleanup ( ) const
inline

Definition at line 989 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and needsCleanup().

Referenced by needsCleanup().

◆ next()

opStatus llvm::APFloat::next ( bool  nextDown)
inline

Definition at line 1171 of file APFloat.h.

References APFLOAT_DISPATCH_ON_SEMANTICS, and next().

Referenced by LowerFROUND(), llvm::detail::DoubleAPFloat::next(), and next().

◆ operator!=()

bool llvm::APFloat::operator!= ( const APFloat RHS) const
inline

Definition at line 1295 of file APFloat.h.

References llvm::APFloatBase::cmpEqual, compare(), and RHS.

◆ operator*()

APFloat llvm::APFloat::operator* ( const APFloat RHS) const
inline

Multiply two APFloats, rounding ties to the nearest even.

No error checking.

Definition at line 1200 of file APFloat.h.

References RHS, and llvm::APFloatBase::rmNearestTiesToEven.

◆ operator+()

APFloat llvm::APFloat::operator+ ( const APFloat RHS) const
inline

Add two APFloats, rounding ties to the nearest even.

No error checking.

Definition at line 1184 of file APFloat.h.

References RHS, and llvm::APFloatBase::rmNearestTiesToEven.

◆ operator-() [1/2]

APFloat llvm::APFloat::operator- ( ) const
inline

Negate an APFloat.

Definition at line 1176 of file APFloat.h.

◆ operator-() [2/2]

APFloat llvm::APFloat::operator- ( const APFloat RHS) const
inline

Subtract two APFloats, rounding ties to the nearest even.

No error checking.

Definition at line 1192 of file APFloat.h.

References RHS, and llvm::APFloatBase::rmNearestTiesToEven.

◆ operator/()

APFloat llvm::APFloat::operator/ ( const APFloat RHS) const
inline

Divide the first APFloat by the second, rounding ties to the nearest even.

No error checking.

Definition at line 1208 of file APFloat.h.

References RHS, and llvm::APFloatBase::rmNearestTiesToEven.

◆ operator<()

bool llvm::APFloat::operator< ( const APFloat RHS) const
inline

Definition at line 1297 of file APFloat.h.

References llvm::APFloatBase::cmpLessThan, compare(), and RHS.

◆ operator<=()

bool llvm::APFloat::operator<= ( const APFloat RHS) const
inline

◆ operator=() [1/2]

APFloat & llvm::APFloat::operator= ( APFloat &&  RHS)
default

◆ operator=() [2/2]

APFloat & llvm::APFloat::operator= ( const APFloat RHS)
default

◆ operator==()

bool llvm::APFloat::operator== ( const APFloat RHS) const
inline

Definition at line 1293 of file APFloat.h.

References llvm::APFloatBase::cmpEqual, compare(), and RHS.

◆ operator>()

bool llvm::APFloat::operator> ( const APFloat RHS) const
inline

Definition at line 1301 of file APFloat.h.

References llvm::APFloatBase::cmpGreaterThan, compare(), and RHS.

◆ operator>=()

bool llvm::APFloat::operator>= ( const APFloat RHS) const
inline

◆ print()

void llvm::APFloat::print ( raw_ostream OS) const

Definition at line 5366 of file APFloat.cpp.

References OS, and toString().

Referenced by dump().

◆ Profile()

void llvm::APFloat::Profile ( FoldingSetNodeID NID) const

Used to insert APFloat objects, or objects that contain APFloat objects, into FoldingSets.

Definition at line 5376 of file APFloat.cpp.

References llvm::FoldingSetNodeID::Add(), and bitcastToAPInt().

◆ remainder()

opStatus llvm::APFloat::remainder ( const APFloat RHS)
inline

Definition at line 1134 of file APFloat.h.

References assert(), getSemantics(), llvm_unreachable, and RHS.

Referenced by llvm::detail::DoubleAPFloat::remainder().

◆ roundToIntegral()

opStatus llvm::APFloat::roundToIntegral ( roundingMode  RM)
inline

◆ subtract()

opStatus llvm::APFloat::subtract ( const APFloat RHS,
roundingMode  RM 
)
inline

◆ toString()

void llvm::APFloat::toString ( SmallVectorImpl< char > &  Str,
unsigned  FormatPrecision = 0,
unsigned  FormatMaxPadding = 3,
bool  TruncateZero = true 
) const
inline

Friends And Related Function Documentation

◆ frexp

APFloat frexp ( const APFloat X,
int &  Exp,
roundingMode  RM 
)
friend

◆ hash_value

hash_code hash_value ( const APFloat Arg)
friend

See friend declarations above.

These additional declarations are required in order to compile LLVM with IBM xlC compiler.

Definition at line 5309 of file APFloat.cpp.

◆ ilogb

int ilogb ( const APFloat Arg)
friend

Definition at line 1414 of file APFloat.h.

◆ scalbn

APFloat scalbn ( APFloat  X,
int  Exp,
roundingMode  RM 
)
friend

Member Data Documentation

◆ DoubleAPFloat

Definition at line 1418 of file APFloat.h.

◆ IEEEFloat

Definition at line 1417 of file APFloat.h.


The documentation for this class was generated from the following files: