@@ -156,7 +156,7 @@ simde_mm256_fmadd_ps (simde__m256 a, simde__m256 b, simde__m256 c) {
156156SIMDE_FUNCTION_ATTRIBUTES
157157simde__m128d
158158simde_mm_fmadd_sd (simde__m128d a , simde__m128d b , simde__m128d c ) {
159- #if defined(SIMDE_X86_FMA_NATIVE )
159+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
160160 return _mm_fmadd_sd (a , b , c );
161161 #else
162162 return simde_mm_add_sd (simde_mm_mul_sd (a , b ), c );
@@ -170,7 +170,7 @@ simde_mm_fmadd_sd (simde__m128d a, simde__m128d b, simde__m128d c) {
170170SIMDE_FUNCTION_ATTRIBUTES
171171simde__m128
172172simde_mm_fmadd_ss (simde__m128 a , simde__m128 b , simde__m128 c ) {
173- #if defined(SIMDE_X86_FMA_NATIVE )
173+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
174174 return _mm_fmadd_ss (a , b , c );
175175 #else
176176 return simde_mm_add_ss (simde_mm_mul_ss (a , b ), c );
@@ -296,7 +296,7 @@ simde_mm256_fmsub_ps (simde__m256 a, simde__m256 b, simde__m256 c) {
296296SIMDE_FUNCTION_ATTRIBUTES
297297simde__m128d
298298simde_mm_fmsub_sd (simde__m128d a , simde__m128d b , simde__m128d c ) {
299- #if defined(SIMDE_X86_FMA_NATIVE )
299+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
300300 return _mm_fmsub_sd (a , b , c );
301301 #else
302302 return simde_mm_sub_sd (simde_mm_mul_sd (a , b ), c );
@@ -310,7 +310,7 @@ simde_mm_fmsub_sd (simde__m128d a, simde__m128d b, simde__m128d c) {
310310SIMDE_FUNCTION_ATTRIBUTES
311311simde__m128
312312simde_mm_fmsub_ss (simde__m128 a , simde__m128 b , simde__m128 c ) {
313- #if defined(SIMDE_X86_FMA_NATIVE )
313+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
314314 return _mm_fmsub_ss (a , b , c );
315315 #else
316316 return simde_mm_sub_ss (simde_mm_mul_ss (a , b ), c );
@@ -528,7 +528,7 @@ simde_mm256_fnmadd_ps (simde__m256 a, simde__m256 b, simde__m256 c) {
528528SIMDE_FUNCTION_ATTRIBUTES
529529simde__m128d
530530simde_mm_fnmadd_sd (simde__m128d a , simde__m128d b , simde__m128d c ) {
531- #if defined(SIMDE_X86_FMA_NATIVE )
531+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
532532 return _mm_fnmadd_sd (a , b , c );
533533 #else
534534 simde__m128d_private
@@ -551,7 +551,7 @@ simde_mm_fnmadd_sd (simde__m128d a, simde__m128d b, simde__m128d c) {
551551SIMDE_FUNCTION_ATTRIBUTES
552552simde__m128
553553simde_mm_fnmadd_ss (simde__m128 a , simde__m128 b , simde__m128 c ) {
554- #if defined(SIMDE_X86_FMA_NATIVE )
554+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
555555 return _mm_fnmadd_ss (a , b , c );
556556 #else
557557 simde__m128_private
@@ -674,7 +674,7 @@ simde_mm256_fnmsub_ps (simde__m256 a, simde__m256 b, simde__m256 c) {
674674SIMDE_FUNCTION_ATTRIBUTES
675675simde__m128d
676676simde_mm_fnmsub_sd (simde__m128d a , simde__m128d b , simde__m128d c ) {
677- #if defined(SIMDE_X86_FMA_NATIVE )
677+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
678678 return _mm_fnmsub_sd (a , b , c );
679679 #else
680680 simde__m128d_private
@@ -697,7 +697,7 @@ simde_mm_fnmsub_sd (simde__m128d a, simde__m128d b, simde__m128d c) {
697697SIMDE_FUNCTION_ATTRIBUTES
698698simde__m128
699699simde_mm_fnmsub_ss (simde__m128 a , simde__m128 b , simde__m128 c ) {
700- #if defined(SIMDE_X86_FMA_NATIVE )
700+ #if defined(SIMDE_X86_FMA_NATIVE ) && !defined( SIMDE_BUG_LCC_FMA_WRONG_RESULT )
701701 return _mm_fnmsub_ss (a , b , c );
702702 #else
703703 simde__m128_private
0 commit comments