#include "llvm/IR/ConstantFPRange.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
usingnamespacellvm;
void ConstantFPRange::makeEmpty() { … }
void ConstantFPRange::makeFull() { … }
bool ConstantFPRange::isNaNOnly() const { … }
ConstantFPRange::ConstantFPRange(const fltSemantics &Sem, bool IsFullSet)
: … { … }
ConstantFPRange::ConstantFPRange(const APFloat &Value)
: … { … }
static APFloat::cmpResult strictCompare(const APFloat &LHS,
const APFloat &RHS) { … }
static bool isNonCanonicalEmptySet(const APFloat &Lower, const APFloat &Upper) { … }
static void canonicalizeRange(APFloat &Lower, APFloat &Upper) { … }
ConstantFPRange::ConstantFPRange(APFloat LowerVal, APFloat UpperVal,
bool MayBeQNaNVal, bool MayBeSNaNVal)
: … { … }
ConstantFPRange ConstantFPRange::getFinite(const fltSemantics &Sem) { … }
ConstantFPRange ConstantFPRange::getNaNOnly(const fltSemantics &Sem,
bool MayBeQNaN, bool MayBeSNaN) { … }
ConstantFPRange ConstantFPRange::getNonNaN(const fltSemantics &Sem) { … }
static bool fcmpPredExcludesEqual(FCmpInst::Predicate Pred) { … }
static ConstantFPRange makeLessThan(APFloat V, FCmpInst::Predicate Pred) { … }
static ConstantFPRange makeGreaterThan(APFloat V, FCmpInst::Predicate Pred) { … }
static ConstantFPRange extendZeroIfEqual(const ConstantFPRange &CR,
FCmpInst::Predicate Pred) { … }
static ConstantFPRange setNaNField(const ConstantFPRange &CR,
FCmpInst::Predicate Pred) { … }
ConstantFPRange
ConstantFPRange::makeAllowedFCmpRegion(FCmpInst::Predicate Pred,
const ConstantFPRange &Other) { … }
ConstantFPRange
ConstantFPRange::makeSatisfyingFCmpRegion(FCmpInst::Predicate Pred,
const ConstantFPRange &Other) { … }
std::optional<ConstantFPRange>
ConstantFPRange::makeExactFCmpRegion(FCmpInst::Predicate Pred,
const APFloat &Other) { … }
bool ConstantFPRange::fcmp(FCmpInst::Predicate Pred,
const ConstantFPRange &Other) const { … }
bool ConstantFPRange::isFullSet() const { … }
bool ConstantFPRange::isEmptySet() const { … }
bool ConstantFPRange::contains(const APFloat &Val) const { … }
bool ConstantFPRange::contains(const ConstantFPRange &CR) const { … }
const APFloat *ConstantFPRange::getSingleElement(bool ExcludesNaN) const { … }
std::optional<bool> ConstantFPRange::getSignBit() const { … }
bool ConstantFPRange::operator==(const ConstantFPRange &CR) const { … }
FPClassTest ConstantFPRange::classify() const { … }
void ConstantFPRange::print(raw_ostream &OS) const { … }
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
LLVM_DUMP_METHOD void ConstantFPRange::dump() const { print(dbgs()); }
#endif
ConstantFPRange
ConstantFPRange::intersectWith(const ConstantFPRange &CR) const { … }
ConstantFPRange ConstantFPRange::unionWith(const ConstantFPRange &CR) const { … }