[][src]Function safe_arch::fused_mul_addsub_m256d

#[must_use]pub fn fused_mul_addsub_m256d(a: m256d, b: m256d, c: m256d) -> m256d
This is supported with target feature fma only.

Lanewise fused (a * b) addsub c (adds odd lanes and subtracts even lanes)

let a = m256d::from_array([1.0, 2.0, 3.0, 4.0]);
let b = m256d::from_array([5.0, 6.0, 7.0, 8.0]);
let c = m256d::from_array([1.0, 1.0, 1.0, 1.0]);
let d = fused_mul_addsub_m256d(a, b, c).to_array();
assert_eq!(d, [4.0, 13.0, 20.0, 33.0]);
  • Intrinsic: _mm256_fmaddsub_pd
  • Assembly: one of
    • vfmaddsub132pd ymm, ymm, ymm
    • vfmaddsub213pd ymm, ymm, ymm
    • vfmaddsub231pd ymm, ymm, ymm