LLVM 24.0.0git
llvm::KnownFPClass Class Reference

#include "llvm/Support/KnownFPClass.h"

Public Types

enum class  MinMaxKind {
  minimum , maximum , minimumnum , maximumnum ,
  minnum , maxnum
}

Public Member Functions

FPClassTest getKnownFPClasses () const
 Floating-point classes the value could be one of.
void setKnownFPClasses (FPClassTest Classes)
std::optional< bool > getSignBit () const
 std::nullopt if the sign bit is unknown, true if the sign bit is definitely set or false if the sign bit is definitely unset.
void setSignBit (std::optional< bool > Sign)
 KnownFPClass (FPClassMask Known=FPClassMask::kfcAllFlags)
 KnownFPClass (FPClassTest Known)
 KnownFPClass (FPClassTest Known, bool Sign)
LLVM_ABI KnownFPClass (const APFloat &C)
bool operator== (KnownFPClass Other) const
bool isKnownNever (FPClassMask Mask) const
 Return true if it's known this can never be one of the mask entries.
bool isKnownNever (FPClassTest Mask) const
 Return true if it's known this can never be one of the mask entries.
bool isKnownAlways (FPClassMask Mask) const
bool isKnownAlways (FPClassTest Mask) const
bool isUnknown () const
bool isKnownNeverNaN () const
 Return true if it's known this can never be a nan.
bool isKnownAlwaysNaN () const
 Return true if it's known this must always be a nan.
bool isKnownNeverInfinity () const
 Return true if it's known this can never be an infinity.
bool isKnownNeverInfOrNaN () const
 Return true if it's known this can never be an infinity or nan.
bool isKnownNeverPosInfinity () const
 Return true if it's known this can never be +infinity.
bool isKnownNeverNegInfinity () const
 Return true if it's known this can never be -infinity.
bool isKnownNeverSubnormal () const
 Return true if it's known this can never be a subnormal.
bool isKnownNeverPosSubnormal () const
 Return true if it's known this can never be a positive subnormal.
bool isKnownNeverNegSubnormal () const
 Return true if it's known this can never be a negative subnormal.
bool isKnownNeverZero () const
 Return true if it's known this can never be a zero.
bool isKnownNeverPosZero () const
 Return true if it's known this can never be a literal positive zero.
bool isKnownNeverNegZero () const
 Return true if it's known this can never be a negative zero.
LLVM_ABI bool isKnownNeverLogicalZero (DenormalMode Mode) const
 Return true if it's known this can never be interpreted as a zero.
LLVM_ABI bool isKnownNeverLogicalNegZero (DenormalMode Mode) const
 Return true if it's known this can never be interpreted as a negative zero.
LLVM_ABI bool isKnownNeverLogicalPosZero (DenormalMode Mode) const
 Return true if it's known this can never be interpreted as a positive zero.
bool cannotBeOrderedLessThanZero () const
 Return true if we can prove that the analyzed floating-point value is either NaN or never less than -0.0.
bool cannotBeOrderedGreaterThanZero () const
 Return true if we can prove that the analyzed floating-point value is either NaN or never greater than -0.0.
bool cannotBeOrderedLessEqZero (DenormalMode Mode) const
 Return true if it's known this can never be a positive value or a logical 0.
bool cannotBeOrderedGreaterEqZero (DenormalMode Mode) const
 Return true if it's know this can never be a negative value or a logical 0.
KnownFPClass intersectWith (const KnownFPClass &RHS) const
KnownFPClass unionWith (const KnownFPClass &RHS) const
KnownFPClass & operator|= (const KnownFPClass &RHS)
void knownNot (FPClassMask RuleOut)
void knownNot (FPClassTest RuleOut)
void fneg ()
void fabs ()
LLVM_ABI KnownBits toKnownBits (const fltSemantics &FltSemantics) const
 Report known bits for a float with provided semantics.
bool signBitIsZeroOrNaN () const
 Return true if the sign bit must be 0, ignoring the sign of nans.
void signBitMustBeZero ()
 Assume the sign bit is zero.
void signBitMustBeOne ()
 Assume the sign bit is one.
void copysign (const KnownFPClass &Sign)
void propagateNonSNaN (const KnownFPClass &Src)
void propagateNonSNaN (const KnownFPClass &LHS, const KnownFPClass &RHS)
void propagateNonNaN (const KnownFPClass &Src)
void propagateNonNaN (const KnownFPClass &LHS, const KnownFPClass &RHS)
void resetAll ()

Static Public Member Functions

static LLVM_ABI KnownFPClass applyInputDenormalMode (const KnownFPClass &Src, DenormalMode Mode)
 Return the known classes of Src after passing through an input that may flush subnormals to zero according to Mode.
static LLVM_ABI KnownFPClass applyOutputDenormalMode (const KnownFPClass &Src, DenormalMode Mode)
 Return the known classes of Src after producing an output that may flush subnormals to zero according to Mode.
static KnownFPClass fneg (const KnownFPClass &Src)
static KnownFPClass fabs (const KnownFPClass &Src)
static LLVM_ABI KnownFPClass minMaxLike (const KnownFPClass &LHS, const KnownFPClass &RHS, MinMaxKind Kind, DenormalMode DenormMode=DenormalMode::getDynamic())
static LLVM_ABI KnownFPClass canonicalize (const KnownFPClass &Src, DenormalMode DenormMode=DenormalMode::getDynamic())
 Apply the canonicalize intrinsic to this value.
static LLVM_ABI KnownFPClass bitcast (const fltSemantics &FltSemantics, const KnownBits &Bits)
 Report known values for a bitcast into a float with provided semantics.
static LLVM_ABI KnownFPClass fadd (const KnownFPClass &LHS, const KnownFPClass &RHS, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fadd.
static LLVM_ABI KnownFPClass fadd_self (const KnownFPClass &Src, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fadd x, x.
static LLVM_ABI KnownFPClass fsub (const KnownFPClass &LHS, const KnownFPClass &RHS, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fsub.
static LLVM_ABI KnownFPClass fmul (const KnownFPClass &LHS, const KnownFPClass &RHS, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fmul.
static KnownFPClass square (const KnownFPClass &Src, DenormalMode Mode=DenormalMode::getDynamic())
static LLVM_ABI KnownFPClass fmul (const KnownFPClass &LHS, const APFloat &RHS, DenormalMode Mode=DenormalMode::getDynamic())
static LLVM_ABI KnownFPClass fdiv (const KnownFPClass &LHS, const KnownFPClass &RHS, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fdiv.
static LLVM_ABI KnownFPClass fdiv_self (const KnownFPClass &Src, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fdiv x, x.
static LLVM_ABI KnownFPClass frem (const KnownFPClass &LHS, const KnownFPClass &RHS, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for frem.
static LLVM_ABI KnownFPClass frem_self (const KnownFPClass &Src, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for frem x, x.
static LLVM_ABI KnownFPClass fma (const KnownFPClass &LHS, const KnownFPClass &RHS, const KnownFPClass &Addend, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fma.
static LLVM_ABI KnownFPClass fmuladd (const KnownFPClass &LHS, const KnownFPClass &RHS, const KnownFPClass &Addend, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fmuladd.
static LLVM_ABI KnownFPClass fma_square (const KnownFPClass &Squared, const KnownFPClass &Addend, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fma squared, squared, addend.
static LLVM_ABI KnownFPClass fmuladd_square (const KnownFPClass &Squared, const KnownFPClass &Addend, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for fmuladd squared, squared, addend.
static LLVM_ABI KnownFPClass sqrt (const KnownFPClass &Src, DenormalMode Mode=DenormalMode::getDynamic())
 Propagate known class for sqrt.
static LLVM_ABI KnownFPClass log (const KnownFPClass &Src, DenormalMode Mode, bool IsMultiUnitFPType)
 Propagate known class for log/log2/log10.
static LLVM_ABI KnownFPClass exp (const KnownFPClass &Src)
 Report known values for exp, exp2 and exp10.
static LLVM_ABI KnownFPClass sin (const KnownFPClass &Src)
 Report known values for sin.
static LLVM_ABI KnownFPClass cos (const KnownFPClass &Src)
 Report known values for cos.
static LLVM_ABI KnownFPClass tan (const KnownFPClass &Src)
 Report known values for tan.
static LLVM_ABI KnownFPClass sinh (const KnownFPClass &Src)
 Report known values for sinh.
static LLVM_ABI KnownFPClass cosh (const KnownFPClass &Src)
 Report known values for cosh.
static LLVM_ABI KnownFPClass tanh (const KnownFPClass &Src)
 Report known values for tanh.
static LLVM_ABI KnownFPClass asin (const KnownFPClass &Src)
 Report known values for asin.
static LLVM_ABI KnownFPClass acos (const KnownFPClass &Src)
 Report known values for acos.
static LLVM_ABI KnownFPClass atan (const KnownFPClass &Src)
 Report known values for atan.
static LLVM_ABI KnownFPClass atan2 (const KnownFPClass &LHS, const KnownFPClass &RHS, DenormalMode Mode=DenormalMode::getDynamic())
 Report known values for atan2.
static KnownFPClass copysign (const KnownFPClass &KnownMag, const KnownFPClass &KnownSign)
static LLVM_ABI KnownFPClass fpext (const KnownFPClass &KnownSrc, const fltSemantics &DstTy, const fltSemantics &SrcTy, DenormalMode DstMode, DenormalMode SrcMode)
 Propagate known class for fpext.
static LLVM_ABI KnownFPClass fptrunc (const KnownFPClass &KnownSrc, const fltSemantics &DstTy, const fltSemantics &SrcTy, DenormalMode DstMode, DenormalMode SrcMode)
 Propagate known class for fptrunc and fptrunc_round.
static LLVM_ABI KnownFPClass roundToIntegral (const KnownFPClass &Src, bool IsMultiUnitFPType, DenormalMode Mode=DenormalMode::getDynamic())
 Propagate known class for rounding intrinsics (rint, nearbyint, round, roundeven).
static LLVM_ABI KnownFPClass trunc (const KnownFPClass &Src, DenormalMode Mode=DenormalMode::getDynamic())
 Propagate known class for trunc.
static LLVM_ABI KnownFPClass floor (const KnownFPClass &Src, bool IsMultiUnitFPType, DenormalMode Mode=DenormalMode::getDynamic())
 Propagate known class for floor.
static LLVM_ABI KnownFPClass ceil (const KnownFPClass &Src, bool IsMultiUnitFPType, DenormalMode Mode=DenormalMode::getDynamic())
 Propagate known class for ceil.
static LLVM_ABI KnownFPClass frexp_mant (const KnownFPClass &Src, DenormalMode Mode=DenormalMode::getDynamic())
 Propagate known class for mantissa component of frexp.
static LLVM_ABI KnownFPClass ldexp (const KnownFPClass &Src, const APInt &ConstantRangeMin, const APInt &ConstantRangeMax, const fltSemantics &Flt, DenormalMode Mode=DenormalMode::getDynamic())
 Propagate known class for ldexp, assuming the exponent is known to be within [ConstantRangeMin, ConstantRangeMax].
static LLVM_ABI KnownFPClass ldexp (const KnownFPClass &Src, const KnownBits &ExpBits, const fltSemantics &Flt, DenormalMode Mode=DenormalMode::getDynamic())
static LLVM_ABI KnownFPClass pow (const KnownFPClass &LHS, const KnownFPClass &RHS)
 Propagate known class for pow.
static LLVM_ABI KnownFPClass powi (const KnownFPClass &Src, const KnownBits &N)
 Propagate known class for powi.

Static Public Attributes

static constexpr FPClassTest OrderedLessThanZeroMask
static constexpr FPClassTest OrderedGreaterThanZeroMask

Detailed Description

Definition at line 66 of file KnownFPClass.h.

Member Enumeration Documentation

◆ MinMaxKind

enum class llvm::KnownFPClass::MinMaxKind
strong
Enumerator
minimum 
maximum 
minimumnum 
maximumnum 
minnum 
maxnum 

Definition at line 428 of file KnownFPClass.h.

Constructor & Destructor Documentation

◆ KnownFPClass() [1/4]

◆ KnownFPClass() [2/4]

llvm::KnownFPClass::KnownFPClass ( FPClassTest Known)
inline

Definition at line 210 of file KnownFPClass.h.

References llvm::Known.

◆ KnownFPClass() [3/4]

llvm::KnownFPClass::KnownFPClass ( FPClassTest Known,
bool Sign )
inline

Definition at line 211 of file KnownFPClass.h.

References llvm::Known.

◆ KnownFPClass() [4/4]

KnownFPClass::KnownFPClass ( const APFloat & C)

Definition at line 21 of file KnownFPClass.cpp.

References C(), and KnownFPClass().

Member Function Documentation

◆ acos()

KnownFPClass KnownFPClass::acos ( const KnownFPClass & Src)
static

Report known values for acos.

Definition at line 1022 of file KnownFPClass.cpp.

References llvm::fcInf, llvm::fcNegative, llvm::fcPosNormal, llvm::fcSubnormal, llvm::fcZero, isKnownNever(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass().

◆ applyInputDenormalMode()

◆ applyOutputDenormalMode()

KnownFPClass KnownFPClass::applyOutputDenormalMode ( const KnownFPClass & Src,
DenormalMode Mode )
static

◆ asin()

KnownFPClass KnownFPClass::asin ( const KnownFPClass & Src)
static

Report known values for asin.

Definition at line 1002 of file KnownFPClass.cpp.

References llvm::fcInf, llvm::fcNegFinite, llvm::fcPosNormal, llvm::fcPosSubnormal, isKnownNever(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass().

◆ atan()

◆ atan2()

◆ bitcast()

◆ cannotBeOrderedGreaterEqZero()

bool llvm::KnownFPClass::cannotBeOrderedGreaterEqZero ( DenormalMode Mode) const
inline

Return true if it's know this can never be a negative value or a logical 0.

 NaN --> true

x >= -0 --> false nsub --> true if mode is ieee, false otherwise. x < -0 --> true

Definition at line 334 of file KnownFPClass.h.

References llvm::fcPositive, isKnownNever(), isKnownNeverLogicalNegZero(), and Mode.

Referenced by llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ cannotBeOrderedGreaterThanZero()

bool llvm::KnownFPClass::cannotBeOrderedGreaterThanZero ( ) const
inline

Return true if we can prove that the analyzed floating-point value is either NaN or never greater than -0.0.

NaN --> true +0 --> true -0 --> true x > +0 --> false x < -0 --> true

Definition at line 312 of file KnownFPClass.h.

References isKnownNever(), and OrderedGreaterThanZeroMask.

Referenced by fadd_impl(), and ldexp().

◆ cannotBeOrderedLessEqZero()

bool llvm::KnownFPClass::cannotBeOrderedLessEqZero ( DenormalMode Mode) const
inline

Return true if it's known this can never be a positive value or a logical 0.

 NaN --> true

x <= +0 --> false psub --> true if mode is ieee, false otherwise. x > +0 --> true

Definition at line 323 of file KnownFPClass.h.

References llvm::fcNegative, isKnownNever(), isKnownNeverLogicalPosZero(), and Mode.

◆ cannotBeOrderedLessThanZero()

bool llvm::KnownFPClass::cannotBeOrderedLessThanZero ( ) const
inline

Return true if we can prove that the analyzed floating-point value is either NaN or never less than -0.0.

 NaN --> true
  +0 --> true
  -0 --> true

x > +0 --> true x < -0 --> false

Definition at line 301 of file KnownFPClass.h.

References isKnownNever(), and OrderedLessThanZeroMask.

Referenced by computeKnownFPClass(), fadd_impl(), ldexp(), log(), simplifyFCmpInst(), simplifyUnaryIntrinsic(), and sqrt().

◆ canonicalize()

◆ ceil()

KnownFPClass KnownFPClass::ceil ( const KnownFPClass & Src,
bool IsMultiUnitFPType,
DenormalMode Mode = DenormalMode::getDynamic() )
static

Propagate known class for ceil.

IsMultiUnitFPType if this is for a multi-unit floating-point type.

Definition at line 1290 of file KnownFPClass.cpp.

References llvm::fcNegInf, isKnownNeverNegInfinity(), llvm::Known, KnownFPClass(), and roundToIntegral().

Referenced by computeKnownFPClass(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ copysign() [1/2]

KnownFPClass llvm::KnownFPClass::copysign ( const KnownFPClass & KnownMag,
const KnownFPClass & KnownSign )
inlinestatic

Definition at line 610 of file KnownFPClass.h.

References llvm::Known, and KnownFPClass().

◆ copysign() [2/2]

◆ cos()

KnownFPClass KnownFPClass::cos ( const KnownFPClass & Src)
static

Report known values for cos.

Definition at line 928 of file KnownFPClass.cpp.

References KnownFPClass(), and sin().

Referenced by computeKnownFPClass().

◆ cosh()

KnownFPClass KnownFPClass::cosh ( const KnownFPClass & Src)
static

Report known values for cosh.

Definition at line 965 of file KnownFPClass.cpp.

References llvm::fcNegative, llvm::fcSubnormal, llvm::fcZero, llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass().

◆ exp()

KnownFPClass KnownFPClass::exp ( const KnownFPClass & Src)
static

Report known values for exp, exp2 and exp10.

This function assumes that exp10(-1.0) = +0.1 and exp10(+1.0) = +10.0 are both finite normal values, which holds for formats with a corresponding LLVM IR type (e.g. does not hold for Float4E2M1FN).

Definition at line 843 of file KnownFPClass.cpp.

References llvm::fcNegative, llvm::fcNegInf, llvm::fcNegNormal, llvm::fcPosInf, llvm::fcPosNormal, llvm::fcPosSubnormal, llvm::fcPosZero, isKnownNever(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ fabs() [1/2]

◆ fabs() [2/2]

KnownFPClass llvm::KnownFPClass::fabs ( const KnownFPClass & Src)
inlinestatic

Definition at line 421 of file KnownFPClass.h.

References llvm::Known, and KnownFPClass().

◆ fadd()

◆ fadd_self()

◆ fdiv()

◆ fdiv_self()

KnownFPClass KnownFPClass::fdiv_self ( const KnownFPClass & Src,
DenormalMode Mode = DenormalMode::getDynamic() )
static

Report known values for fdiv x, x.

Definition at line 704 of file KnownFPClass.cpp.

References llvm::fcNan, llvm::fcPosNormal, isKnownNeverInfOrNaN(), isKnownNeverLogicalZero(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass().

◆ floor()

KnownFPClass KnownFPClass::floor ( const KnownFPClass & Src,
bool IsMultiUnitFPType,
DenormalMode Mode = DenormalMode::getDynamic() )
static

Propagate known class for floor.

IsMultiUnitFPType if this is for a multi-unit floating-point type.

Definition at line 1279 of file KnownFPClass.cpp.

References llvm::fcPosInf, isKnownNeverPosInfinity(), llvm::Known, KnownFPClass(), and roundToIntegral().

Referenced by computeKnownFPClass(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ fma()

◆ fma_square()

◆ fmul() [1/2]

◆ fmul() [2/2]

◆ fmuladd()

KnownFPClass KnownFPClass::fmuladd ( const KnownFPClass & LHS,
const KnownFPClass & RHS,
const KnownFPClass & Addend,
DenormalMode Mode = DenormalMode::getDynamic() )
static

Report known values for fmuladd.

Definition at line 801 of file KnownFPClass.cpp.

References fadd(), fma(), fmul(), and KnownFPClass().

Referenced by computeKnownFPClass().

◆ fmuladd_square()

KnownFPClass KnownFPClass::fmuladd_square ( const KnownFPClass & Squared,
const KnownFPClass & Addend,
DenormalMode Mode = DenormalMode::getDynamic() )
static

Report known values for fmuladd squared, squared, addend.

Definition at line 835 of file KnownFPClass.cpp.

References fadd(), fma_square(), KnownFPClass(), and square().

Referenced by computeKnownFPClass().

◆ fneg() [1/2]

◆ fneg() [2/2]

KnownFPClass llvm::KnownFPClass::fneg ( const KnownFPClass & Src)
inlinestatic

Definition at line 396 of file KnownFPClass.h.

References llvm::Known, and KnownFPClass().

◆ fpext()

KnownFPClass KnownFPClass::fpext ( const KnownFPClass & KnownSrc,
const fltSemantics & DstTy,
const fltSemantics & SrcTy,
DenormalMode DstMode,
DenormalMode SrcMode )
static

Propagate known class for fpext.

DstMode and SrcMode are the denormal modes of the destination and source types.

Definition at line 1207 of file KnownFPClass.cpp.

References fpconvert(), getConvertDenormalMode(), and KnownFPClass().

Referenced by computeKnownFPClass(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ fptrunc()

KnownFPClass KnownFPClass::fptrunc ( const KnownFPClass & KnownSrc,
const fltSemantics & DstTy,
const fltSemantics & SrcTy,
DenormalMode DstMode,
DenormalMode SrcMode )
static

Propagate known class for fptrunc and fptrunc_round.

DstMode and SrcMode are the denormal modes of the destination and source types.

Definition at line 1220 of file KnownFPClass.cpp.

References fpconvert(), getConvertDenormalMode(), and KnownFPClass().

Referenced by computeKnownFPClassForFPTrunc(), and simplifyDemandedUseFPClassFPTrunc().

◆ frem()

◆ frem_self()

◆ frexp_mant()

◆ fsub()

◆ getKnownFPClasses()

FPClassTest llvm::KnownFPClass::getKnownFPClasses ( ) const
inline

◆ getSignBit()

std::optional< bool > llvm::KnownFPClass::getSignBit ( ) const
inline

std::nullopt if the sign bit is unknown, true if the sign bit is definitely set or false if the sign bit is definitely unset.

By convention, returns false for kfcNone/poison.

Definition at line 172 of file KnownFPClass.h.

References llvm::kfcNegSignBit, llvm::kfcNone, and llvm::kfcPosSignBit.

Referenced by computeKnownFPClass(), copysign(), printGISelValueTracking(), simplifyDemandedFPClassCopysignMag(), simplifyDemandedFPClassFabs(), simplifyDemandedFPClassFnegFabs(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedFPClass(), simplifyUnaryIntrinsic(), and toKnownBits().

◆ intersectWith()

◆ isKnownAlways() [1/2]

bool llvm::KnownFPClass::isKnownAlways ( FPClassMask Mask) const
inline

◆ isKnownAlways() [2/2]

bool llvm::KnownFPClass::isKnownAlways ( FPClassTest Mask) const
inline

Definition at line 231 of file KnownFPClass.h.

References isKnownAlways().

◆ isKnownAlwaysNaN()

bool llvm::KnownFPClass::isKnownAlwaysNaN ( ) const
inline

Return true if it's known this must always be a nan.

Definition at line 241 of file KnownFPClass.h.

References llvm::fcNan, and isKnownAlways().

Referenced by simplifyFCmpInst().

◆ isKnownNever() [1/2]

◆ isKnownNever() [2/2]

bool llvm::KnownFPClass::isKnownNever ( FPClassTest Mask) const
inline

Return true if it's known this can never be one of the mask entries.

Definition at line 225 of file KnownFPClass.h.

References isKnownNever().

◆ isKnownNeverInfinity()

bool llvm::KnownFPClass::isKnownNeverInfinity ( ) const
inline

Return true if it's known this can never be an infinity.

Definition at line 244 of file KnownFPClass.h.

References llvm::fcInf, and isKnownNever().

Referenced by fdiv(), fmul(), inferFastMathValueFlags(), sin(), and tan().

◆ isKnownNeverInfOrNaN()

bool llvm::KnownFPClass::isKnownNeverInfOrNaN ( ) const
inline

◆ isKnownNeverLogicalNegZero()

bool KnownFPClass::isKnownNeverLogicalNegZero ( DenormalMode Mode) const

Return true if it's known this can never be interpreted as a negative zero.

Definition at line 82 of file KnownFPClass.cpp.

References applyInputDenormalMode(), and isKnownNeverNegZero().

Referenced by cannotBeOrderedGreaterEqZero(), computeKnownFPClass(), frexp_mant(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), and sqrt().

◆ isKnownNeverLogicalPosZero()

bool KnownFPClass::isKnownNeverLogicalPosZero ( DenormalMode Mode) const

Return true if it's known this can never be interpreted as a positive zero.

Definition at line 86 of file KnownFPClass.cpp.

References applyInputDenormalMode(), and isKnownNeverPosZero().

Referenced by cannotBeOrderedLessEqZero(), computeKnownFPClass(), frem(), frexp_mant(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ isKnownNeverLogicalZero()

bool KnownFPClass::isKnownNeverLogicalZero ( DenormalMode Mode) const

Return true if it's known this can never be interpreted as a zero.

This extends isKnownNeverZero to cover the case where the assumed floating-point mode for the function interprets denormals as zero.

Definition at line 78 of file KnownFPClass.cpp.

References applyInputDenormalMode(), and isKnownNeverZero().

Referenced by llvm::GCNTTIImpl::canSimplifyLegacyMulToMul(), llvm::computeConstantRange(), fdiv_self(), frem(), frem_self(), log(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ isKnownNeverNaN()

◆ isKnownNeverNegInfinity()

bool llvm::KnownFPClass::isKnownNeverNegInfinity ( ) const
inline

Return true if it's known this can never be -infinity.

Definition at line 253 of file KnownFPClass.h.

References llvm::fcNegInf, and isKnownNever().

Referenced by ceil(), frexp_mant(), ldexp(), roundToIntegral(), and trunc().

◆ isKnownNeverNegSubnormal()

bool llvm::KnownFPClass::isKnownNeverNegSubnormal ( ) const
inline

Return true if it's known this can never be a negative subnormal.

Definition at line 262 of file KnownFPClass.h.

References llvm::fcNegSubnormal, and isKnownNever().

Referenced by ldexp().

◆ isKnownNeverNegZero()

bool llvm::KnownFPClass::isKnownNeverNegZero ( ) const
inline

Return true if it's known this can never be a negative zero.

This means a literal -0 and does not include denormal inputs implicitly treated as -0.

Definition at line 273 of file KnownFPClass.h.

References llvm::fcNegZero, and isKnownNever().

Referenced by isKnownNeverLogicalNegZero(), ldexp(), and tanh().

◆ isKnownNeverPosInfinity()

bool llvm::KnownFPClass::isKnownNeverPosInfinity ( ) const
inline

Return true if it's known this can never be +infinity.

Definition at line 250 of file KnownFPClass.h.

References llvm::fcPosInf, and isKnownNever().

Referenced by computeKnownFPClass(), floor(), frexp_mant(), ldexp(), log(), roundToIntegral(), sqrt(), and trunc().

◆ isKnownNeverPosSubnormal()

bool llvm::KnownFPClass::isKnownNeverPosSubnormal ( ) const
inline

Return true if it's known this can never be a positive subnormal.

Definition at line 259 of file KnownFPClass.h.

References llvm::fcPosSubnormal, and isKnownNever().

Referenced by ldexp().

◆ isKnownNeverPosZero()

bool llvm::KnownFPClass::isKnownNeverPosZero ( ) const
inline

Return true if it's known this can never be a literal positive zero.

Definition at line 269 of file KnownFPClass.h.

References llvm::fcPosZero, and isKnownNever().

Referenced by isKnownNeverLogicalPosZero(), and ldexp().

◆ isKnownNeverSubnormal()

bool llvm::KnownFPClass::isKnownNeverSubnormal ( ) const
inline

Return true if it's known this can never be a subnormal.

Definition at line 256 of file KnownFPClass.h.

References llvm::fcSubnormal, and isKnownNever().

Referenced by llvm::computeConstantRange(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ isKnownNeverZero()

bool llvm::KnownFPClass::isKnownNeverZero ( ) const
inline

Return true if it's known this can never be a zero.

This means a literal [+-]0, and does not include denormal inputs implicitly treated as [+-]0.

Definition at line 266 of file KnownFPClass.h.

References llvm::fcZero, and isKnownNever().

Referenced by fdiv(), fmul(), isKnownNeverLogicalZero(), and llvm::LegalizerHelper::lowerFMinimumMaximum().

◆ isUnknown()

◆ knownNot() [1/2]

◆ knownNot() [2/2]

void llvm::KnownFPClass::knownNot ( FPClassTest RuleOut)
inline

Definition at line 363 of file KnownFPClass.h.

References knownNot().

Referenced by knownNot().

◆ ldexp() [1/2]

◆ ldexp() [2/2]

◆ log()

KnownFPClass KnownFPClass::log ( const KnownFPClass & Src,
DenormalMode Mode,
bool IsMultiUnitFPType )
static

Propagate known class for log/log2/log10.

IsMultiUnitFPType if this is for a multi-unit floating-point type.

Definition at line 867 of file KnownFPClass.cpp.

References cannotBeOrderedLessThanZero(), llvm::fcNan, llvm::fcNegInf, llvm::fcNegZero, llvm::fcPosInf, llvm::fcSubnormal, isKnownNeverLogicalZero(), isKnownNeverNaN(), isKnownNeverPosInfinity(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass(), and llvm::InstCombinerImpl::SimplifyDemandedUseFPClass().

◆ minMaxLike()

◆ operator==()

bool llvm::KnownFPClass::operator== ( KnownFPClass Other) const
inline

Definition at line 215 of file KnownFPClass.h.

References KnownFPClass(), and llvm::Other.

◆ operator|=()

KnownFPClass & llvm::KnownFPClass::operator|= ( const KnownFPClass & RHS)
inline

Definition at line 356 of file KnownFPClass.h.

References KnownFPClass(), and RHS.

◆ pow()

◆ powi()

◆ propagateNonNaN() [1/2]

void llvm::KnownFPClass::propagateNonNaN ( const KnownFPClass & LHS,
const KnownFPClass & RHS )
inline

Definition at line 638 of file KnownFPClass.h.

References llvm::fcNan, KnownFPClass(), knownNot(), LHS, propagateNonSNaN(), and RHS.

◆ propagateNonNaN() [2/2]

void llvm::KnownFPClass::propagateNonNaN ( const KnownFPClass & Src)
inline

Definition at line 632 of file KnownFPClass.h.

References llvm::fcNan, KnownFPClass(), knownNot(), and propagateNonSNaN().

◆ propagateNonSNaN() [1/2]

void llvm::KnownFPClass::propagateNonSNaN ( const KnownFPClass & LHS,
const KnownFPClass & RHS )
inline

Definition at line 624 of file KnownFPClass.h.

References llvm::fcSNan, KnownFPClass(), knownNot(), LHS, and RHS.

◆ propagateNonSNaN() [2/2]

void llvm::KnownFPClass::propagateNonSNaN ( const KnownFPClass & Src)
inline

Definition at line 618 of file KnownFPClass.h.

References llvm::fcSNan, KnownFPClass(), and knownNot().

Referenced by propagateNonNaN(), and propagateNonNaN().

◆ resetAll()

void llvm::KnownFPClass::resetAll ( )
inline

Definition at line 708 of file KnownFPClass.h.

References KnownFPClass().

◆ roundToIntegral()

KnownFPClass KnownFPClass::roundToIntegral ( const KnownFPClass & Src,
bool IsMultiUnitFPType,
DenormalMode Mode = DenormalMode::getDynamic() )
static

◆ setKnownFPClasses()

void llvm::KnownFPClass::setKnownFPClasses ( FPClassTest Classes)
inline

Definition at line 165 of file KnownFPClass.h.

◆ setSignBit()

void llvm::KnownFPClass::setSignBit ( std::optional< bool > Sign)
inline

◆ signBitIsZeroOrNaN()

bool llvm::KnownFPClass::signBitIsZeroOrNaN ( ) const
inline

Return true if the sign bit must be 0, ignoring the sign of nans.

Definition at line 579 of file KnownFPClass.h.

References llvm::fcNegative, and isKnownNever().

Referenced by llvm::AMDGPUTargetLowering::lowerFPOW().

◆ signBitMustBeOne()

void llvm::KnownFPClass::signBitMustBeOne ( )
inline

Assume the sign bit is one.

Definition at line 585 of file KnownFPClass.h.

References llvm::kfcNegSignBit.

Referenced by computeKnownFPClassFromCond().

◆ signBitMustBeZero()

void llvm::KnownFPClass::signBitMustBeZero ( )
inline

Assume the sign bit is zero.

Definition at line 582 of file KnownFPClass.h.

References llvm::kfcPosSignBit.

Referenced by computeKnownFPClassFromCond().

◆ sin()

KnownFPClass KnownFPClass::sin ( const KnownFPClass & Src)
static

Report known values for sin.

Definition at line 915 of file KnownFPClass.cpp.

References llvm::fcInf, llvm::fcNan, isKnownNeverInfinity(), isKnownNeverNaN(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass(), and cos().

◆ sinh()

KnownFPClass KnownFPClass::sinh ( const KnownFPClass & Src)
static

Report known values for sinh.

Definition at line 947 of file KnownFPClass.cpp.

References llvm::fcNegative, llvm::fcPosInf, llvm::fcPosNormal, llvm::fcPosSubnormal, isKnownNever(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass().

◆ sqrt()

◆ square()

◆ tan()

KnownFPClass KnownFPClass::tan ( const KnownFPClass & Src)
static

Report known values for tan.

Definition at line 932 of file KnownFPClass.cpp.

References llvm::fcInf, llvm::fcNan, isKnownNeverInfinity(), isKnownNeverNaN(), llvm::Known, and KnownFPClass().

Referenced by computeKnownFPClass().

◆ tanh()

◆ toKnownBits()

◆ trunc()

◆ unionWith()

KnownFPClass llvm::KnownFPClass::unionWith ( const KnownFPClass & RHS) const
inline

Definition at line 352 of file KnownFPClass.h.

References KnownFPClass(), and RHS.

Referenced by llvm::adjustKnownFPClassForSelectArm().

Member Data Documentation

◆ OrderedGreaterThanZeroMask

FPClassTest llvm::KnownFPClass::OrderedGreaterThanZeroMask
staticconstexpr

◆ OrderedLessThanZeroMask


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