[][src]Function safe_arch::fused_mul_neg_sub_m256

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

Lanewise fused -(a * b) - c

let a = m256::from_array([1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0, 4.0]);
let b = m256::from_array([5.0, 6.0, 7.0, 8.0, 5.0, 6.0, 7.0, 8.0]);
let c = m256::from_array([1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]);
let d = fused_mul_neg_sub_m256(a, b, c).to_array();
assert_eq!(d, [-6.0, -13.0, -22.0, -33.0, -6.0, -13.0, -22.0, -33.0]);
  • Intrinsic: _mm256_fnmsub_ps
  • Assembly: one of
    • vfnmsub132ps ymm, ymm, ymm
    • vfnmsub213ps ymm, ymm, ymm
    • vfnmsub231ps ymm, ymm, ymm