diff --git a/src/ImageSharp/Common/Helpers/Vector512Utilities.cs b/src/ImageSharp/Common/Helpers/Vector512Utilities.cs index 3325ad1aeb..8a9ba6aa44 100644 --- a/src/ImageSharp/Common/Helpers/Vector512Utilities.cs +++ b/src/ImageSharp/Common/Helpers/Vector512Utilities.cs @@ -138,9 +138,10 @@ internal static class Vector512Utilities /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector512 MultiplyAddEstimate(Vector512 a, Vector512 b, Vector512 c) - => Vector512.Create( - Vector256Utilities.MultiplyAddEstimate(a.GetLower(), b.GetLower(), c.GetLower()), - Vector256Utilities.MultiplyAddEstimate(a.GetUpper(), b.GetUpper(), c.GetUpper())); + + // Don't actually use FMA as it requires many more instruction to extract the + // upper and lower parts of the vector and then recombine them. + => (a + b) * c; [DoesNotReturn] private static void ThrowUnreachableException() => throw new UnreachableException();