diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2023-04-09 22:18:03 -0400 |
---|---|---|
committer | Matt Arsenault <arsenm2@gmail.com> | 2023-04-21 07:02:55 -0400 |
commit | 69668590592fcca2c2b22ba2257be57f0319fc9c (patch) | |
tree | 1a79d279d58722f5ff4b76f1ded0eb962ca887ce /llvm/lib/Support/APFloat.cpp | |
parent | 384a8dd10eb43b23301acc801855bdb0a0b6b35c (diff) | |
download | llvm-69668590592fcca2c2b22ba2257be57f0319fc9c.zip llvm-69668590592fcca2c2b22ba2257be57f0319fc9c.tar.gz llvm-69668590592fcca2c2b22ba2257be57f0319fc9c.tar.bz2 |
ValueTracking: Implement computeKnownFPClass for fpext
Diffstat (limited to 'llvm/lib/Support/APFloat.cpp')
-rw-r--r-- | llvm/lib/Support/APFloat.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Support/APFloat.cpp b/llvm/lib/Support/APFloat.cpp index 4834f4d4..c882c08 100644 --- a/llvm/lib/Support/APFloat.cpp +++ b/llvm/lib/Support/APFloat.cpp @@ -308,6 +308,20 @@ unsigned int APFloatBase::semanticsIntSizeInBits(const fltSemantics &semantics, return MinBitWidth; } +bool APFloatBase::isRepresentableAsNormalIn(const fltSemantics &Src, + const fltSemantics &Dst) { + // Exponent range must be larger. + if (Src.maxExponent >= Dst.maxExponent || Src.minExponent <= Dst.minExponent) + return false; + + // If the mantissa is long enough, the result value could still be denormal + // with a larger exponent range. + // + // FIXME: This condition is probably not accurate but also shouldn't be a + // practical concern with existing types. + return Dst.precision >= Src.precision; +} + unsigned APFloatBase::getSizeInBits(const fltSemantics &Sem) { return Sem.sizeInBits; } |