[llvm] [KnownFPClass] Refactor NaN sign encoding for KnownFPClass (PR #220606)

Tim Gymnich via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 24 02:17:19 PDT 2026


================
@@ -24,41 +24,219 @@ class APInt;
 struct fltSemantics;
 struct KnownBits;
 
+enum FPClassMask : unsigned {
----------------
tgymnich wrote:

I prefer correct code of less verbose code, but I see your point. Not sure if this is a good idea or not, but we could add `constexpr` aliases for all cases.
```c++
constexpr FPClassMask kfcNone = FPClassMask::kfcNone;
constexpr FPClassMask kfcNegQNan = FPClassMask::kfcNegQNan;
constexpr FPClassMask kfcNegSNan = FPClassMask::kfcNegSNan;
constexpr FPClassMask kfcNegInf = FPClassMask::kfcNegInf;
constexpr FPClassMask kfcNegNormal = FPClassMask::kfcNegNormal;
constexpr FPClassMask kfcNegSubnormal = FPClassMask::kfcNegSubnormal;
constexpr FPClassMask kfcNegZero = FPClassMask::kfcNegZero;
constexpr FPClassMask kfcPosZero = FPClassMask::kfcPosZero;
constexpr FPClassMask kfcPosSubnormal = FPClassMask::kfcPosSubnormal;
constexpr FPClassMask kfcPosNormal = FPClassMask::kfcPosNormal;
constexpr FPClassMask kfcPosInf = FPClassMask::kfcPosInf;
constexpr FPClassMask kfcPosSNan = FPClassMask::kfcPosSNan;
constexpr FPClassMask kfcPosQNan = FPClassMask::kfcPosQNan;
constexpr FPClassMask kfcSNan = FPClassMask::kfcSNan;
constexpr FPClassMask kfcQNan = FPClassMask::kfcQNan;
constexpr FPClassMask kfcPosNan = FPClassMask::kfcPosNan;
constexpr FPClassMask kfcNegNan = FPClassMask::kfcNegNan;
constexpr FPClassMask kfcNan = FPClassMask::kfcNan;
constexpr FPClassMask kfcInf = FPClassMask::kfcInf;
constexpr FPClassMask kfcNormal = FPClassMask::kfcNormal;
constexpr FPClassMask kfcSubnormal = FPClassMask::kfcSubnormal;
constexpr FPClassMask kfcZero = FPClassMask::kfcZero;
constexpr FPClassMask kfcPosFinite = FPClassMask::kfcPosFinite;
constexpr FPClassMask kfcNegFinite = FPClassMask::kfcNegFinite;
constexpr FPClassMask kfcFinite = FPClassMask::kfcFinite;
constexpr FPClassMask kfcPositive = FPClassMask::kfcPositive;
constexpr FPClassMask kfcNegative = FPClassMask::kfcNegative;
constexpr FPClassMask kfcPosSignBit = FPClassMask::kfcPosSignBit;
constexpr FPClassMask kfcNegSignBit = FPClassMask::kfcNegSignBit;
constexpr FPClassMask kfcAllFlags = FPClassMask::kfcAllFlags;
```

https://github.com/llvm/llvm-project/pull/220606


More information about the llvm-commits mailing list