aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/APFloat.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2023-03-02 05:44:05 -0400
committerMatt Arsenault <arsenm2@gmail.com>2023-03-03 18:54:58 -0400
commit71f1ea2c15bbc5b604e20d71191a16d57d106dc0 (patch)
tree48d8754c593b44b91dac6a94a456ce4279347b4d /llvm/lib/Support/APFloat.cpp
parentba215246dcba0a4997bb851650609208ea74bb93 (diff)
downloadllvm-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.cpp13
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) {