]> git.lizzy.rs Git - rust.git/commitdiff
rewrite unaligned slice, fix output const array
authormiguel raz <miguelraz@gmail.com>
Tue, 1 Jun 2021 20:25:56 +0000 (15:25 -0500)
committermiguel raz <miguelraz@gmail.com>
Tue, 1 Jun 2021 20:25:56 +0000 (15:25 -0500)
crates/core_simd/examples/nbody.rs

index bf045737f82eb388a639188202514ca5c219b662..4fdc02263976c56711d40e62ae042e855a3e84e5 100644 (file)
@@ -128,7 +128,9 @@ pub struct Body {
     while i < N {
         let d2s = f64x2::from_array([(r[i] * r[i]).horizontal_sum(), (r[i + 1] * r[i + 1]).horizontal_sum()]);
         let dmags = f64x2::splat(dt) / (d2s * d2s.sqrt());
-        dmags.write_to_slice_unaligned(&mut mag[i..]);
+        // dmags.write_to_slice_unaligned(&mut mag[i..]);
+        mag[i] = dmags[0];
+        mag[i+1] = dmags[1];
         i += 2;
     }
 
@@ -146,6 +148,12 @@ pub struct Body {
     }
 }
 
+// #[inline]
+// pub unsafe fn write_to_slice_unaligned(slice: &mut SimdF64::<LANES>) {
+//     let target_ptr = slice.get_unchecked_mut(0) as *mut f64x2;
+//     *(target_ptr as *mut f64x2) = SimdF64;
+// }
+
 pub fn run(n: usize) -> (f64, f64) {
     let mut bodies = BODIES;
     offset_momentum(&mut bodies);
@@ -158,7 +166,7 @@ pub fn run(n: usize) -> (f64, f64) {
     (energy_before, energy_after)
 }
 
-const OUTPUT: Vec<f64> = vec![-0.169075164, -0.169087605];
+const OUTPUT: [f64; 2] = [-0.169075164, -0.169087605];
 #[cfg(test)]
 mod tests {
     #[test]
@@ -172,6 +180,8 @@ fn test() {
         }
     }
 }
+
+
 fn main() {
     //let n: usize = std::env::args()
     //.nth(1)