neon/mla: add SSE/SSE2 and AltiVec implementations of vmlaq_f{32,64}
@@ -273,6 +273,12 @@ simde_vmlaq_f32(simde_float32x4_t a, simde_float32x4_t b, simde_float32x4_t c) {
return vmlaq_f32(a, b, c);
#elif defined(SIMDE_WASM_SIMD128_NATIVE)
return wasm_f32x4_add(wasm_f32x4_mul(b, c), a);
+ #elif defined(SIMDE_X86_FMA_NATIVE)
+ return _mm_fmadd_ps(b, c, a);
+ #elif defined(SIMDE_X86_SSE_NATIVE)
+ return _mm_add_ps(_mm_mul_ps(b, c), a);
+ #elif defined(SIMDE_POWER_ALTIVEC_P5_NATIVE)
+ return vec_madd(b, c, a);
#else
simde_float32x4_private
r_,
@@ -304,6 +310,12 @@ simde_vmlaq_f64(simde_float64x2_t a, simde_float64x2_t b, simde_float64x2_t c) {
return vmlaq_f64(a, b, c);
#elif defined(SIMDE_WASM_SIMD128_NATIVE)
return wasm_f64x2_add(wasm_f64x2_mul(b, c), a);
+ #elif defined(SIMDE_X86_FMA_NATIVE)
+ return _mm_fmadd_pd(b, c, a);
+ #elif defined(SIMDE_X86_SSE2_NATIVE)
+ return _mm_add_pd(_mm_mul_pd(b, c), a);
+ #elif defined(SIMDE_POWER_ALTIVEC_P5_NATIVE)
+ return vec_madd(b, c, a);
#else
simde_float64x2_private
r_,
