LLVM 20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
llvm::FastMathFlags Class Reference

Convenience struct for specifying and reasoning about fast-math flags. More...

#include "llvm/IR/FMF.h"

Public Types

enum  {
  AllowReassoc = (1 << 0) , NoNaNs = (1 << 1) , NoInfs = (1 << 2) , NoSignedZeros = (1 << 3) ,
  AllowReciprocal = (1 << 4) , AllowContract = (1 << 5) , ApproxFunc = (1 << 6)
}
 

Public Member Functions

 FastMathFlags ()=default
 
bool any () const
 
bool none () const
 
bool all () const
 
void clear ()
 
void set ()
 
bool allowReassoc () const
 Flag queries.
 
bool noNaNs () const
 
bool noInfs () const
 
bool noSignedZeros () const
 
bool allowReciprocal () const
 
bool allowContract () const
 
bool approxFunc () const
 
bool isFast () const
 'Fast' means all bits are set.
 
void setAllowReassoc (bool B=true)
 Flag setters.
 
void setNoNaNs (bool B=true)
 
void setNoInfs (bool B=true)
 
void setNoSignedZeros (bool B=true)
 
void setAllowReciprocal (bool B=true)
 
void setAllowContract (bool B=true)
 
void setApproxFunc (bool B=true)
 
void setFast (bool B=true)
 
void operator&= (const FastMathFlags &OtherFlags)
 
void operator|= (const FastMathFlags &OtherFlags)
 
bool operator!= (const FastMathFlags &OtherFlags) const
 
void print (raw_ostream &O) const
 Print fast-math flags to O.
 

Static Public Member Functions

static FastMathFlags getFast ()
 
static FastMathFlags intersectRewrite (FastMathFlags LHS, FastMathFlags RHS)
 Intersect rewrite-based flags.
 
static FastMathFlags unionValue (FastMathFlags LHS, FastMathFlags RHS)
 Union value flags.
 

Friends

class FPMathOperator
 

Detailed Description

Convenience struct for specifying and reasoning about fast-math flags.

Definition at line 20 of file FMF.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
AllowReassoc 
NoNaNs 
NoInfs 
NoSignedZeros 
AllowReciprocal 
AllowContract 
ApproxFunc 

Definition at line 39 of file FMF.h.

Constructor & Destructor Documentation

◆ FastMathFlags()

llvm::FastMathFlags::FastMathFlags ( )
default

Referenced by intersectRewrite(), and unionValue().

Member Function Documentation

◆ all()

bool llvm::FastMathFlags::all ( ) const
inline

Definition at line 59 of file FMF.h.

Referenced by isFast(), llvm::InstModificationIRStrategy::mutate(), and print().

◆ allowContract()

bool llvm::FastMathFlags::allowContract ( ) const
inline

◆ allowReassoc()

bool llvm::FastMathFlags::allowReassoc ( ) const
inline

◆ allowReciprocal()

bool llvm::FastMathFlags::allowReciprocal ( ) const
inline

Definition at line 69 of file FMF.h.

References AllowReciprocal.

Referenced by mapToLLVMFastMathFlags(), and print().

◆ any()

bool llvm::FastMathFlags::any ( ) const
inline

Definition at line 57 of file FMF.h.

◆ approxFunc()

bool llvm::FastMathFlags::approxFunc ( ) const
inline

Definition at line 71 of file FMF.h.

References ApproxFunc.

Referenced by llvm::AMDGPULibCalls::fold(), mapToLLVMFastMathFlags(), and print().

◆ clear()

void llvm::FastMathFlags::clear ( )
inline

Definition at line 61 of file FMF.h.

Referenced by llvm::IRBuilderBase::clearFastMathFlags(), and setFast().

◆ getFast()

static FastMathFlags llvm::FastMathFlags::getFast ( )
inlinestatic

Definition at line 51 of file FMF.h.

References setFast().

Referenced by llvm::RecurrenceDescriptor::AddReductionVar().

◆ intersectRewrite()

static FastMathFlags llvm::FastMathFlags::intersectRewrite ( FastMathFlags  LHS,
FastMathFlags  RHS 
)
inlinestatic

Intersect rewrite-based flags.

Definition at line 113 of file FMF.h.

References AllowContract, AllowReassoc, AllowReciprocal, ApproxFunc, FastMathFlags(), LHS, and RHS.

◆ isFast()

bool llvm::FastMathFlags::isFast ( ) const
inline

'Fast' means all bits are set.

Definition at line 73 of file FMF.h.

References all().

◆ noInfs()

bool llvm::FastMathFlags::noInfs ( ) const
inline

◆ noNaNs()

bool llvm::FastMathFlags::noNaNs ( ) const
inline

◆ none()

bool llvm::FastMathFlags::none ( ) const
inline

Definition at line 58 of file FMF.h.

Referenced by llvm::AMDGPULibCalls::fold(), and llvm::InstModificationIRStrategy::mutate().

◆ noSignedZeros()

bool llvm::FastMathFlags::noSignedZeros ( ) const
inline

◆ operator!=()

bool llvm::FastMathFlags::operator!= ( const FastMathFlags OtherFlags) const
inline

Definition at line 105 of file FMF.h.

◆ operator&=()

void llvm::FastMathFlags::operator&= ( const FastMathFlags OtherFlags)
inline

Definition at line 99 of file FMF.h.

◆ operator|=()

void llvm::FastMathFlags::operator|= ( const FastMathFlags OtherFlags)
inline

Definition at line 102 of file FMF.h.

◆ print()

void llvm::FastMathFlags::print ( raw_ostream O) const

Print fast-math flags to O.

Definition at line 271 of file Operator.cpp.

References all(), allowContract(), allowReassoc(), allowReciprocal(), approxFunc(), noInfs(), noNaNs(), and noSignedZeros().

Referenced by llvm::operator<<(), and llvm::VPRecipeWithIRFlags::printFlags().

◆ set()

void llvm::FastMathFlags::set ( )
inline

Definition at line 62 of file FMF.h.

Referenced by setFast().

◆ setAllowContract()

void llvm::FastMathFlags::setAllowContract ( bool  B = true)
inline

◆ setAllowReassoc()

void llvm::FastMathFlags::setAllowReassoc ( bool  B = true)
inline

Flag setters.

Definition at line 76 of file FMF.h.

References AllowReassoc, and B.

Referenced by getDecodedFastMathFlags(), llvm::VPRecipeWithIRFlags::getFastMathFlags(), and mapFromLLVMFastMathFlags().

◆ setAllowReciprocal()

void llvm::FastMathFlags::setAllowReciprocal ( bool  B = true)
inline

◆ setApproxFunc()

void llvm::FastMathFlags::setApproxFunc ( bool  B = true)
inline

◆ setFast()

void llvm::FastMathFlags::setFast ( bool  B = true)
inline

Definition at line 97 of file FMF.h.

References B, clear(), and set().

Referenced by getDecodedFastMathFlags(), and getFast().

◆ setNoInfs()

void llvm::FastMathFlags::setNoInfs ( bool  B = true)
inline

Definition at line 82 of file FMF.h.

References B, and NoInfs.

Referenced by getDecodedFastMathFlags(), llvm::VPRecipeWithIRFlags::getFastMathFlags(), and mapFromLLVMFastMathFlags().

◆ setNoNaNs()

void llvm::FastMathFlags::setNoNaNs ( bool  B = true)
inline

◆ setNoSignedZeros()

void llvm::FastMathFlags::setNoSignedZeros ( bool  B = true)
inline

◆ unionValue()

static FastMathFlags llvm::FastMathFlags::unionValue ( FastMathFlags  LHS,
FastMathFlags  RHS 
)
inlinestatic

Union value flags.

Definition at line 121 of file FMF.h.

References FastMathFlags(), LHS, NoInfs, NoNaNs, NoSignedZeros, and RHS.

Friends And Related Function Documentation

◆ FPMathOperator

friend class FPMathOperator
friend

Definition at line 22 of file FMF.h.


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