pub fn fused_mul_subadd_m128(a: m128, b: m128, c: m128) -> m128
Available with target feature fma only.
Expand description

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

let a = m128::from_array([2.0, 3.0, 4.0, 5.0]);
let b = m128::from_array([4.0, 5.0, 6.0, 7.0]);
let c = m128::from_array([1.0, 1.0, 1.0, 1.0]);
let d = fused_mul_subadd_m128(a, b, c).to_array();
assert_eq!(d, [9.0, 14.0, 25.0, 34.0]);
  • Intrinsic: _mm_fmsubadd_ps
  • Assembly:
    • vfmsubadd132ps xmm, xmm, xmm
    • vfmsubadd213ps xmm, xmm, xmm
    • vfmsubadd231ps xmm, xmm, xmm