diff --git a/src/ImageSharp/Formats/Webp/Lossy/YuvConversion.cs b/src/ImageSharp/Formats/Webp/Lossy/YuvConversion.cs index 251060ceef..d40b674e6e 100644 --- a/src/ImageSharp/Formats/Webp/Lossy/YuvConversion.cs +++ b/src/ImageSharp/Formats/Webp/Lossy/YuvConversion.cs @@ -722,7 +722,7 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy Vector128 r0 = Sse2.MultiplyHigh(v0.AsUInt16(), K26149.AsUInt16()); Vector128 g0 = Sse2.MultiplyHigh(u0.AsUInt16(), K6419.AsUInt16()); Vector128 g1 = Sse2.MultiplyHigh(v0.AsUInt16(), K13320.AsUInt16()); - + Vector128 r1 = Sse2.Subtract(y1.AsUInt16(), K14234.AsUInt16()); Vector128 r2 = Sse2.Add(r1, r0); @@ -734,13 +734,14 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy Vector128 b1 = Sse2.AddSaturate(b0, y1); Vector128 b2 = Sse2.SubtractSaturate(b1, K17685.AsUInt16()); - // use logical shift for B2, which can be larger than 32767 + // Use logical shift for B2, which can be larger than 32767. r = Sse2.ShiftRightArithmetic(r2.AsInt16(), 6); // range: [-14234, 30815] g = Sse2.ShiftRightArithmetic(g4.AsInt16(), 6); // range: [-10953, 27710] b = Sse2.ShiftRightLogical(b2.AsInt16(), 6); // range: [0, 34238] } // Load the bytes into the *upper* part of 16b words. That's "<< 8", basically. + [MethodImpl(InliningOptions.ShortMethod)] private static Vector128 LoadHigh(Span src) { Vector64 tmp = Unsafe.As>(ref MemoryMarshal.GetReference(src));