f128
from_bits
/ to_bits
sometimes gets reversed on ppc · Issue #125102 · rust-lang/rust (original) (raw)
It seems like using transmute causes the upper and lower 64-bit halves to be loaded reversed. More at https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/f128.20system.20libraries.20noncompliant.20platforms/near/438489330
#![feature(f128)]
#[no_mangle] #[inline(never)] fn add_entry(a: f128, b: f128) -> f128 { a + b }
fn main() { let a = f128::from_bits(0x0); let b = f128::from_bits(0x1); dbg!(a, b); let c = add_entry(a, b); dbg!(c); }
Espected b
to print as 0x00000000000000000000000000000001
, but with rustc add_test.rs -o add_test.rust --target powerpc64-unknown-linux-gnu -Clinker=powerpc64-linux-gnu-gcc -Ctarget-cpu=pwr9
it instead prints 0x00000000000000010000000000000000
.