= llvm::APSInt;
38 return Floating(APFloat::getInf(Sem));
52 returnF.convertToInteger(
Result, llvm::APFloat::rmTowardZero, &IsExact);
56llvm::RoundingMode RM)
const{
59 Copy.convert(*Sem, RM, &LosesInfo);
70 return APSInt(F.bitcastToAPInt());
73 void print(llvm::raw_ostream &OS)
const{
81llvm::raw_string_ostream OS(NameStr);
86 unsigned bitWidth()
const{
returnF.semanticsSizeInBits(F.getSemantics()); }
91 bool isZero()
const{
returnF.isZero(); }
93 bool isMin()
const{
returnF.isSmallest(); }
94 bool isMinusOne()
const{
returnF.isExactlyValue(-1.0); }
95 bool isNan()
const{
returnF.isNaN(); }
97 bool isInf()
const{
returnF.isInfinity(); }
98 bool isFinite()
const{
returnF.isFinite(); }
99 bool isNormal()
const{
returnF.isNormal(); }
101llvm::FPClassTest
classify()
const{
returnF.classify(); }
102APFloat::fltCategory
getCategory()
const{
returnF.getCategory(); }
105llvm::APFloatBase::cmpResult CmpRes = F.compare(RHS.F);
107 casellvm::APFloatBase::cmpLessThan:
109 casellvm::APFloatBase::cmpEqual:
111 casellvm::APFloatBase::cmpGreaterThan:
113 casellvm::APFloatBase::cmpUnordered:
116llvm_unreachable(
"Inavlid cmpResult value");
120 constllvm::fltSemantics &Sem,
121llvm::RoundingMode RM,
124APFloat::opStatus Status = F.convertFromAPInt(Val, Val.isSigned(), RM);
130 constllvm::fltSemantics &Sem) {
131 size_tSize = APFloat::semanticsSizeInBits(Sem);
132llvm::APInt API(Size,
true);
133llvm::LoadIntFromMemory(API, (
constuint8_t *)Buff, Size / 8);
139llvm::APInt API = F.bitcastToAPInt();
140llvm::StoreIntToMemory(API, (uint8_t *)Buff,
bitWidth() / 8);
145 return sizeof(llvm::fltSemantics *) +
146(APFloat::semanticsSizeInBits(F.getSemantics()) / 8);
151*
reinterpret_cast<constllvm::fltSemantics **
>(Buff) = &F.getSemantics();
153llvm::APInt API = F.bitcastToAPInt();
154llvm::StoreIntToMemory(API, (uint8_t *)(Buff +
sizeof(
void*)),
159 constllvm::fltSemantics *Sem;
160std::memcpy((
void*)&Sem, Buff,
sizeof(
void*));
166 if(
V.isNegative())
174llvm::RoundingMode RM,
Floating*R) {
176 returnR->F.add(B.F, RM);
181 APFloatOne(A.F.getSemantics(), 1);
183 returnR->F.add(One, RM);
187llvm::RoundingMode RM,
Floating*R) {
189 returnR->F.subtract(B.F, RM);
194 APFloatOne(A.F.getSemantics(), 1);
196 returnR->F.subtract(One, RM);
200llvm::RoundingMode RM,
Floating*R) {
202 returnR->F.multiply(B.F, RM);
206llvm::RoundingMode RM,
Floating*R) {
208 returnR->F.divide(B.F, RM);
217llvm::raw_ostream &
operator<<(llvm::raw_ostream &OS, Floating F);
APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat],...
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
bool operator<(Floating RHS) const
static APFloat::opStatus div(const Floating &A, const Floating &B, llvm::RoundingMode RM, Floating *R)
Floating operator-() const
static Floating bitcastFromMemory(const std::byte *Buff, const llvm::fltSemantics &Sem)
void print(llvm::raw_ostream &OS) const
APSInt toAPSInt(unsigned NumBits=0) const
static Floating deserialize(const std::byte *Buff)
void serialize(std::byte *Buff) const
static APFloat::opStatus sub(const Floating &A, const Floating &B, llvm::RoundingMode RM, Floating *R)
const APFloat & getAPFloat() const
llvm::FPClassTest classify() const
Floating toSemantics(const Floating &Other, llvm::RoundingMode RM) const
Convert this Floating to one with the same semantics as \Other.
bool operator>(Floating RHS) const
Floating()
Zero-initializes a Floating.
unsigned bitWidth() const
ComparisonCategoryResult compare(const Floating &RHS) const
static APFloat::opStatus increment(const Floating &A, llvm::RoundingMode RM, Floating *R)
bool operator>=(Floating RHS) const
bool operator<=(Floating RHS) const
static APFloat::opStatus fromIntegral(APSInt Val, const llvm::fltSemantics &Sem, llvm::RoundingMode RM, Floating &Result)
Floating toSemantics(const llvm::fltSemantics *Sem, llvm::RoundingMode RM) const
size_t bytesToSerialize() const
static APFloat::opStatus add(const Floating &A, const Floating &B, llvm::RoundingMode RM, Floating *R)
static APFloat::opStatus mul(const Floating &A, const Floating &B, llvm::RoundingMode RM, Floating *R)
std::string toDiagnosticString(const ASTContext &Ctx) const
bool operator!=(Floating RHS) const
static Floating getInf(const llvm::fltSemantics &Sem)
bool operator==(Floating RHS) const
static bool neg(const Floating &A, Floating *R)
static APFloat::opStatus decrement(const Floating &A, llvm::RoundingMode RM, Floating *R)
Floating(const APFloat &F)
static Floating abs(const Floating &F)
APFloat::opStatus convertToInteger(APSInt &Result) const
APValue toAPValue(const ASTContext &) const
APFloat::fltCategory getCategory() const
void bitcastToMemory(std::byte *Buff) const
FixedPoint getSwappedBytes(FixedPoint F)
llvm::raw_ostream & operator<<(llvm::raw_ostream &OS, const Boolean &B)
The JSON file list parser is used to communicate input to InstallAPI.
ComparisonCategoryResult
An enumeration representing the possible results of a three-way comparison.
@ Result
The result type of a method or function.
@ Other
Other implicit parameter.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4