summary refs log tree commit diff stats
path: root/gitlab/issues/target_ppc/host_missing/accel_missing/1779.toml
diff options
context:
space:
mode:
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.toml38
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());
+}
+```"""