diff options
Diffstat (limited to 'gitlab/issues/target_ppc/host_missing/accel_missing/1779.toml')
| -rw-r--r-- | gitlab/issues/target_ppc/host_missing/accel_missing/1779.toml | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gitlab/issues/target_ppc/host_missing/accel_missing/1779.toml b/gitlab/issues/target_ppc/host_missing/accel_missing/1779.toml new file mode 100644 index 000000000..24c01097f --- /dev/null +++ b/gitlab/issues/target_ppc/host_missing/accel_missing/1779.toml @@ -0,0 +1,38 @@ +id = 1779 +title = "PowerPC AltiVec source vector subnormal values are not flushed to zero" +state = "closed" +created_at = "2023-07-22T21:17:19.526Z" +closed_at = "2023-09-07T15:43:08.538Z" +labels = ["Closed::Fixed", "target: ppc"] +url = "https://gitlab.com/qemu-project/qemu/-/issues/1779" +host-os = "Ubuntu 20.04" +host-arch = "x86-64" +qemu-version = "7.0.0" +guest-os = "Ubuntu" +guest-arch = "PowerPC" +description = """AltiVec specifies that source and result vectors are flushed to zero (in NJ mode). Only result vectors are flushed to zero.""" +reproduce = """1. Compile the attached Rust program (e.g. `cargo +nightly build --target powerpc-unknown-linux-gnu`) +2. Run the program and expect assertions to pass. +3. See assertions fail.""" +additional = """See the offending Rust program: + +``` +#![feature(stdsimd, powerpc_target_feature)] + +use std::arch::powerpc::*; + +#[target_feature(enable = "altivec")] +unsafe fn add(x: f32, y: f32) -> f32 { + let array: [f32; 4] = unsafe { std::mem::transmute(vec_add(vec_splats(x), vec_splats(y))) }; + array[0] +} + +pub fn main() { + let result = unsafe { add(-1.0857398e-38, 0.) }; + assert_eq!(result, 0.); + + // if the input is flushed, the result will be +0 + // if only the output is flushed, the result is -0 + assert!(result.is_sign_positive()); +} +```""" |