This comment suggest the lack of
libm support for
f128 as the main reason for its removal. From the PR that removed
f128, and the minutes of the meeting where the removal of
f128 was decided it appears that the main reason for its removal is that its support wasn’t even close to being finished before the Rust 1.0 release and there never was an RFC for adding it.
Looking at libm’s documentation:
It is also provided for _Float128 and _Float64x on powerpc64le (PowerPC 64-bits little-endian), x86_64, x86, ia64, aarch64, alpha, mips64, riscv, s390 and sparc.
_Float128 is supported by libm on a lot of platforms, it is not supported on all platforms. This shouldn’t be a blocker though, since, for example,
libm does not support
_Float16 anywhere yet LLVM does, so it might be worth it to investigate whether LLVM supports
_Float128 in some of the platforms that
libm does not like
In the PR @thestinger mentioned:
there’s no harm in having it available for use with the libgcc_s (libquadmath) f128 support. […] The support is compiler-rt is maturing, and it now supports addition, subtraction, multiplication and has an initial (but buggy) comparison implementation. It will soon have full support for the required operations on 64-bit without needing libgcc_s.
So there seems to be a
libgcc_s library that supports these and could be used in place of
libm, and that back then
compiler-rt was starting to get support for these.