LLVM 22.0.0git
llvm::DenormalMode Struct Reference

Represent subnormal handling kind for floating point instruction inputs and outputs. More...

#include "llvm/ADT/FloatingPointMode.h"

Public Types

enum  DenormalModeKind : int8_t {
  Invalid = -1 , IEEE , PreserveSign , PositiveZero ,
  Dynamic
}
 Represent handled modes for denormal (aka subnormal) modes in the floating point environment. More...

Public Member Functions

constexpr DenormalMode ()=default
constexpr DenormalMode (const DenormalMode &)=default
constexpr DenormalMode (DenormalModeKind Out, DenormalModeKind In)
DenormalModeoperator= (const DenormalMode &)=default
bool operator== (DenormalMode Other) const
bool operator!= (DenormalMode Other) const
bool isSimple () const
bool isValid () const
constexpr bool inputsAreZero () const
 Return true if input denormals must be implicitly treated as 0.
constexpr bool outputsAreZero () const
 Return true if output denormals should be flushed to 0.
DenormalMode mergeCalleeMode (DenormalMode Callee) const
 Get the effective denormal mode if the mode if this caller calls into a function with Callee.
void print (raw_ostream &OS) const
std::string str () const

Static Public Member Functions

static constexpr DenormalMode getInvalid ()
static constexpr DenormalMode getDefault ()
 Return the assumed default mode for a function without denormal-fp-math.
static constexpr DenormalMode getIEEE ()
static constexpr DenormalMode getPreserveSign ()
static constexpr DenormalMode getPositiveZero ()
static constexpr DenormalMode getDynamic ()

Public Attributes

DenormalModeKind Output = DenormalModeKind::Invalid
 Denormal flushing mode for floating point instruction results in the default floating point environment.
DenormalModeKind Input = DenormalModeKind::Invalid
 Denormal treatment kind for floating point instruction inputs in the default floating-point environment.

Detailed Description

Represent subnormal handling kind for floating point instruction inputs and outputs.

Definition at line 71 of file FloatingPointMode.h.

Member Enumeration Documentation

◆ DenormalModeKind

Represent handled modes for denormal (aka subnormal) modes in the floating point environment.

Enumerator
Invalid 
IEEE 

IEEE-754 denormal numbers preserved.

PreserveSign 

The sign of a flushed-to-zero number is preserved in the sign of 0.

PositiveZero 

Denormals are flushed to positive zero.

Dynamic 

Denormals have unknown treatment.

Definition at line 74 of file FloatingPointMode.h.

Constructor & Destructor Documentation

◆ DenormalMode() [1/3]

◆ DenormalMode() [2/3]

llvm::DenormalMode::DenormalMode ( const DenormalMode & )
constexprdefault

References DenormalMode().

◆ DenormalMode() [3/3]

llvm::DenormalMode::DenormalMode ( DenormalModeKind Out,
DenormalModeKind In )
inlineconstexpr

Definition at line 101 of file FloatingPointMode.h.

References Input, and Output.

Member Function Documentation

◆ getDefault()

constexpr DenormalMode llvm::DenormalMode::getDefault ( )
inlinestaticconstexpr

Return the assumed default mode for a function without denormal-fp-math.

Definition at line 111 of file FloatingPointMode.h.

References DenormalMode(), and getIEEE().

◆ getDynamic()

constexpr DenormalMode llvm::DenormalMode::getDynamic ( )
inlinestaticconstexpr

Definition at line 129 of file FloatingPointMode.h.

References DenormalMode(), and Dynamic.

Referenced by denormModeCompatible(), and getInstrDenormalMode().

◆ getIEEE()

◆ getInvalid()

constexpr DenormalMode llvm::DenormalMode::getInvalid ( )
inlinestaticconstexpr

Definition at line 106 of file FloatingPointMode.h.

References DenormalMode(), and Invalid.

Referenced by checkDenormMode().

◆ getPositiveZero()

constexpr DenormalMode llvm::DenormalMode::getPositiveZero ( )
inlinestaticconstexpr

Definition at line 124 of file FloatingPointMode.h.

References DenormalMode(), and PositiveZero.

Referenced by llvm::KnownFPClass::propagateDenormal().

◆ getPreserveSign()

◆ inputsAreZero()

bool llvm::DenormalMode::inputsAreZero ( ) const
inlineconstexpr

Return true if input denormals must be implicitly treated as 0.

Definition at line 151 of file FloatingPointMode.h.

References Input, PositiveZero, and PreserveSign.

Referenced by computeKnownFPClass(), and isFCmpEqualZero().

◆ isSimple()

bool llvm::DenormalMode::isSimple ( ) const
inline

Definition at line 141 of file FloatingPointMode.h.

References Input, and Output.

◆ isValid()

bool llvm::DenormalMode::isValid ( ) const
inline

Definition at line 145 of file FloatingPointMode.h.

References Input, Invalid, and Output.

◆ mergeCalleeMode()

DenormalMode llvm::DenormalMode::mergeCalleeMode ( DenormalMode Callee) const
inline

Get the effective denormal mode if the mode if this caller calls into a function with Callee.

This promotes dynamic modes to the mode of the caller.

Definition at line 165 of file FloatingPointMode.h.

References DenormalMode(), Dynamic, Input, and Output.

◆ operator!=()

bool llvm::DenormalMode::operator!= ( DenormalMode Other) const
inline

Definition at line 137 of file FloatingPointMode.h.

References DenormalMode(), and llvm::Other.

◆ operator=()

DenormalMode & llvm::DenormalMode::operator= ( const DenormalMode & )
default

References DenormalMode().

◆ operator==()

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

Definition at line 133 of file FloatingPointMode.h.

References DenormalMode(), Input, llvm::Other, and Output.

◆ outputsAreZero()

bool llvm::DenormalMode::outputsAreZero ( ) const
inlineconstexpr

Return true if output denormals should be flushed to 0.

Definition at line 157 of file FloatingPointMode.h.

References Output, PositiveZero, and PreserveSign.

Referenced by computeKnownFPClass().

◆ print()

void llvm::DenormalMode::print ( raw_ostream & OS) const
inline

Definition at line 234 of file FloatingPointMode.h.

References llvm::denormalModeKindName(), Input, and Output.

Referenced by str().

◆ str()

std::string llvm::DenormalMode::str ( ) const
inline

Definition at line 176 of file FloatingPointMode.h.

References print().

Member Data Documentation

◆ Input

DenormalModeKind llvm::DenormalMode::Input = DenormalModeKind::Invalid

Denormal treatment kind for floating point instruction inputs in the default floating-point environment.

If this is not DenormalModeKind::IEEE, floating-point instructions implicitly treat the input value as 0.

Definition at line 97 of file FloatingPointMode.h.

Referenced by computeKnownFPClass(), DenormalMode(), denormModeCompatible(), inputsAreZero(), isFCmpEqualZero(), isSimple(), isValid(), mergeCalleeMode(), llvm::AMDGPUTargetLowering::needsDenormHandlingF32(), needsDenormHandlingF32(), operator==(), llvm::GCNTargetMachine::parseMachineFunctionInfo(), and print().

◆ Output

DenormalModeKind llvm::DenormalMode::Output = DenormalModeKind::Invalid

Denormal flushing mode for floating point instruction results in the default floating point environment.

Definition at line 92 of file FloatingPointMode.h.

Referenced by computeKnownFPClass(), DenormalMode(), denormModeCompatible(), isSimple(), isValid(), mergeCalleeMode(), operator==(), outputsAreZero(), llvm::GCNTargetMachine::parseMachineFunctionInfo(), print(), and llvm::NVPTXTargetLowering::useF32FTZ().


The documentation for this struct was generated from the following file: