[libc-commits] [libc] [libc][math][c23] Add f16divf C23 math function (PR #96131)
via libc-commits
libc-commits at lists.llvm.org
Mon Jun 24 14:09:01 PDT 2024
================
@@ -179,10 +182,18 @@ template <size_t Bits> struct DyadicFloat {
output_bits_t clear_exp = static_cast<output_bits_t>(
output_bits_t(exp_hi) << FPBits<T>::SIG_LEN);
output_bits_t r_bits = FPBits<T>(r).uintval() - clear_exp;
+
if (!(r_bits & FPBits<T>::EXP_MASK)) {
// Output is denormal after rounding, clear the implicit bit for 80-bit
// long double.
r_bits -= IMPLICIT_MASK;
+
+ // TODO: IEEE Std 754-2019 lets implementers choose whether to check for
+ // "tininess" before or after rounding for base-2 formats, as long as
+ // the same choice is made for all operations. Our choice to check after
+ // rounding might not be the same as the hardware's.
+ if (round_and_sticky)
+ raise_except_if_required(FE_UNDERFLOW);
----------------
overmighty wrote:
Sounds good to me.
https://github.com/llvm/llvm-project/pull/96131
More information about the libc-commits
mailing list