mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
BFI: Change language from "exponent" to "scale"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211557 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -28,8 +28,8 @@ using namespace llvm::bfi_detail;
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
#ifndef _MSC_VER
|
||||
const int32_t ScaledNumberBase::MaxExponent;
|
||||
const int32_t ScaledNumberBase::MinExponent;
|
||||
const int32_t ScaledNumberBase::MaxScale;
|
||||
const int32_t ScaledNumberBase::MinScale;
|
||||
#endif
|
||||
|
||||
static void appendDigit(std::string &Str, unsigned D) {
|
||||
@@ -58,22 +58,22 @@ static bool doesRoundUp(char Digit) {
|
||||
}
|
||||
|
||||
static std::string toStringAPFloat(uint64_t D, int E, unsigned Precision) {
|
||||
assert(E >= ScaledNumberBase::MinExponent);
|
||||
assert(E <= ScaledNumberBase::MaxExponent);
|
||||
assert(E >= ScaledNumberBase::MinScale);
|
||||
assert(E <= ScaledNumberBase::MaxScale);
|
||||
|
||||
// Find a new E, but don't let it increase past MaxExponent.
|
||||
// Find a new E, but don't let it increase past MaxScale.
|
||||
int LeadingZeros = ScaledNumberBase::countLeadingZeros64(D);
|
||||
int NewE = std::min(ScaledNumberBase::MaxExponent, E + 63 - LeadingZeros);
|
||||
int NewE = std::min(ScaledNumberBase::MaxScale, E + 63 - LeadingZeros);
|
||||
int Shift = 63 - (NewE - E);
|
||||
assert(Shift <= LeadingZeros);
|
||||
assert(Shift == LeadingZeros || NewE == ScaledNumberBase::MaxExponent);
|
||||
assert(Shift == LeadingZeros || NewE == ScaledNumberBase::MaxScale);
|
||||
D <<= Shift;
|
||||
E = NewE;
|
||||
|
||||
// Check for a denormal.
|
||||
unsigned AdjustedE = E + 16383;
|
||||
if (!(D >> 63)) {
|
||||
assert(E == ScaledNumberBase::MaxExponent);
|
||||
assert(E == ScaledNumberBase::MaxScale);
|
||||
AdjustedE = 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user