diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2023-03-02 05:44:05 -0400 |
---|---|---|
committer | Matt Arsenault <arsenm2@gmail.com> | 2023-03-03 18:54:58 -0400 |
commit | 71f1ea2c15bbc5b604e20d71191a16d57d106dc0 (patch) | |
tree | 48d8754c593b44b91dac6a94a456ce4279347b4d /llvm/lib/Support/APFloat.cpp | |
parent | ba215246dcba0a4997bb851650609208ea74bb93 (diff) | |
download | llvm-71f1ea2c15bbc5b604e20d71191a16d57d106dc0.zip llvm-71f1ea2c15bbc5b604e20d71191a16d57d106dc0.tar.gz llvm-71f1ea2c15bbc5b604e20d71191a16d57d106dc0.tar.bz2 |
APFloat: Add classify
Diffstat (limited to 'llvm/lib/Support/APFloat.cpp')
-rw-r--r-- | llvm/lib/Support/APFloat.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Support/APFloat.cpp b/llvm/lib/Support/APFloat.cpp index fdf16f6..0505382 100644 --- a/llvm/lib/Support/APFloat.cpp +++ b/llvm/lib/Support/APFloat.cpp @@ -5361,6 +5361,19 @@ APFloat::APFloat(const fltSemantics &Semantics, StringRef S) consumeError(StatusOrErr.takeError()); } +FPClassTest APFloat::classify() const { + if (isZero()) + return isNegative() ? fcNegZero : fcPosZero; + if (isNormal()) + return isNegative() ? fcNegNormal : fcPosNormal; + if (isDenormal()) + return isNegative() ? fcNegSubnormal : fcPosSubnormal; + if (isInfinity()) + return isNegative() ? fcNegInf : fcPosInf; + assert(isNaN() && "Other class of FP constant"); + return isSignaling() ? fcSNan : fcQNan; +} + APFloat::opStatus APFloat::convert(const fltSemantics &ToSemantics, roundingMode RM, bool *losesInfo) { if (&getSemantics() == &ToSemantics) { |