[libc-commits] [PATCH] D148759: [libc] Support constexpr uint initialization

Michael Jones via Phabricator via libc-commits libc-commits at lists.llvm.org
Thu Apr 20 11:24:11 PDT 2023


michaelrj added inline comments.


================
Comment at: libc/src/__support/FPUtil/x86_64/LongDoubleBits.h:52
   static constexpr UIntType MAX_NORMAL =
-      ((UIntType(MAX_EXPONENT) - 1)
+      ((UIntType(MAX_EXPONENT - 1))
        << (MantissaWidth<long double>::VALUE + 1)) |
----------------
sivachandra wrote:
> Why was this change required?
This change isn't required, it's from when I was trying to move the constants away from addition and subtraction. That being said, I do think leaving this change would be good because we could remove an extra set of parentheses.


================
Comment at: libc/src/__support/UInt.h:89
 
+  constexpr explicit operator uint16_t() const {
+    return uint16_t(uint64_t(*this));
----------------
sivachandra wrote:
> Is this required for the functionality of this change?
yes, because without this the casts in LongDoubleBits don't work with UInt. 

A related question might be "why are there casts in LongDoubleBits?" The answer is I was testing the constant functionality by using UInt<128> instead of the builtin uint_128 on my x86_64 workstation.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148759/new/

https://reviews.llvm.org/D148759



More information about the libc-commits mailing list