[Bug 2112391] Re: Enable Rust compiler(s) for using IEEE long-double-format on ppc64el starting with 25.10

Zixing Liu 2112391 at bugs.launchpad.net
Wed Jun 4 02:50:05 UTC 2025


> But it seems to be flagged as "nightly-only experimental" - but I'm
not sure what that means.

"nightly-only experimental" in Rust means this feature or functionality
is unavailable in the stable version (requires you to use the nightly
Rust compiler).

> The idea is to use that "by default" on ppc64el starting with 25.10.

Rust only has IEEE 754 standard 128-bit floats. Rust compiler does not
generate the `ppcf128` type in LLVM (see
https://github.com/search?q=repo%3Arust-
lang%2Frust%20ppcf128&type=code).

In the https://doc.rust-lang.org/stable/std/primitive.f128.html
document, it stated that: (f128 is) "A 128-bit floating-point type
(specifically, the “binary128” type defined in IEEE 754-2008)."

> At least for LLVM, this needs to be configured.

LLVM's middle-end and backend do not handle the distinction between IBM
long double and IEEE long double. In LLVM IR, the IEEE 754 standard
128-bit floats have the type "f128" while the IBM long double has the
type "ppcf128". LLVM expect the compiler front-end to lower the
language-specific 128-bit float types to the "f128" and "ppcf128" types
in LLVM IR. So Clang and other LLVM-based compilers have to handle this
logic instead of LLVM (see https://llvm.org/docs/LangRef.html#floating-
point-semantics and also https://llvm.org/docs/LangRef.html#floating-
point-types).

As far as I understand it, the only other compiler that could emit IBM
long double is the LLVM D compiler, which I have already submitted a
patch to the upstream to default to IEEE long double (see
https://github.com/ldc-developers/ldc/pull/4833).

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to rustc in Ubuntu.
https://bugs.launchpad.net/bugs/2112391

Title:
  Enable Rust compiler(s) for using IEEE long-double-format on ppc64el
  starting with 25.10

Status in The Ubuntu-power-systems project:
  New
Status in rustc package in Ubuntu:
  New

Bug description:
  Starting with 25.10, the gcc defaults got changed to use IEEE 754 standard for 128-bit floats:
  LP#2072487 gcc: investigate if we should enable IEEE 754 standard 128-bit floats by default
  This now needs to be done for the Rust compiler(s) as well.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/2112391/+subscriptions




More information about the foundations-bugs mailing list