Closed
Description
This bit of code falls in the assert in Release, while working in Debug.
Both stable and nightly.
use std::arch::x86_64::*;
fn main() {
unsafe {
let a = [2.0f32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
let b = -1.0f32;
let ar = _mm256_loadu_ps(a.as_ptr());
println!("ar: {:?}", ar);
let br = _mm256_set1_ps(b);
println!("br: {:?}", br);
let mut abr = _mm256_setzero_ps();
println!("ab: {:?}", abr);
abr = _mm256_fmadd_ps(ar, br, abr);
println!("ab: {:?}", abr);
let mut ab = [0.0; 8];
_mm256_storeu_ps(ab.as_mut_ptr(), abr);
assert_eq!(ab[0], -2.0f32);
}
}
Metadata
Metadata
Assignees
Labels
No labels