diff options
Diffstat (limited to 'results/classifier/118/architecture-ppc/1779')
| -rw-r--r-- | results/classifier/118/architecture-ppc/1779 | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/results/classifier/118/architecture-ppc/1779 b/results/classifier/118/architecture-ppc/1779 new file mode 100644 index 00000000..e94a8cf1 --- /dev/null +++ b/results/classifier/118/architecture-ppc/1779 @@ -0,0 +1,90 @@ +architecture: 0.922 +ppc: 0.848 +graphic: 0.844 +device: 0.803 +performance: 0.747 +mistranslation: 0.701 +semantic: 0.647 +vnc: 0.578 +PID: 0.575 +permissions: 0.423 +peripherals: 0.414 +arm: 0.411 +boot: 0.365 +debug: 0.348 +user-level: 0.310 +risc-v: 0.306 +TCG: 0.305 +kernel: 0.272 +hypervisor: 0.247 +x86: 0.226 +VMM: 0.226 +network: 0.172 +i386: 0.171 +register: 0.171 +virtual: 0.150 +socket: 0.138 +files: 0.101 +assembly: 0.044 +KVM: 0.019 +-------------------- +ppc: 0.997 +performance: 0.797 +architecture: 0.441 +kernel: 0.251 +debug: 0.219 +TCG: 0.170 +files: 0.102 +device: 0.025 +user-level: 0.025 +semantic: 0.020 +peripherals: 0.020 +assembly: 0.014 +PID: 0.013 +register: 0.012 +virtual: 0.007 +risc-v: 0.005 +VMM: 0.004 +hypervisor: 0.004 +network: 0.003 +boot: 0.003 +permissions: 0.003 +graphic: 0.002 +KVM: 0.001 +mistranslation: 0.001 +vnc: 0.001 +socket: 0.001 +arm: 0.001 +x86: 0.000 +i386: 0.000 + +PowerPC AltiVec source vector subnormal values are not flushed to zero +Description of problem: +AltiVec specifies that source and result vectors are flushed to zero (in NJ mode). Only result vectors are flushed to zero. +Steps to 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 information: +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()); +} +``` |