diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.FromGrayScaleVector8.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.FromGrayScaleVector8.cs deleted file mode 100644 index 75ea60101..000000000 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.FromGrayScaleVector8.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Six Labors. -// Licensed under the Apache License, Version 2.0. - -using System; -using System.Numerics; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using SixLabors.ImageSharp.Tuples; - -namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters -{ - internal abstract partial class JpegColorConverter - { - internal sealed class FromGrayscaleVector8 : Vector8JpegColorConverter - { - public FromGrayscaleVector8(int precision) - : base(JpegColorSpace.Grayscale, precision) - { - } - - protected override void ConvertCoreVectorized(in ComponentValues values, Span result) - { - ref Vector gBase = - ref Unsafe.As>(ref MemoryMarshal.GetReference(values.Component0)); - - ref Vector4Octet resultBase = - ref Unsafe.As(ref MemoryMarshal.GetReference(result)); - - Vector4Pair gg = default; - ref Vector ggRefAsVector = ref Unsafe.As>(ref gg); - - var scale = new Vector(1 / this.MaximumValue); - - // Walking 8 elements at one step: - int n = result.Length / 8; - for (int i = 0; i < n; i++) - { - Vector g = Unsafe.Add(ref gBase, i); - g *= scale; - - ggRefAsVector = g; - - // Collect (g0,g1...g7) vector values in the expected (g0,g0,g0,1), (g1,g1,g1,1) ... order: - ref Vector4Octet destination = ref Unsafe.Add(ref resultBase, i); - destination.Pack(ref gg); - } - } - - protected override void ConvertCore(in ComponentValues values, Span result) => - FromGrayscaleBasic.ConvertCore(values, result, this.MaximumValue); - } - } -} diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.cs index 7b3c11938..7afc09ff5 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.cs @@ -141,7 +141,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters private static IEnumerable GetGrayScaleConverters(int precision) { yield return new FromGrayscaleAvx2(precision); - yield return new FromGrayscaleVector8(precision); yield return new FromGrayscaleBasic(precision); } diff --git a/tests/ImageSharp.Benchmarks/Codecs/Jpeg/GrayscaleColorConversion.cs b/tests/ImageSharp.Benchmarks/Codecs/Jpeg/GrayscaleColorConversion.cs index ee4d7b1bd..3e8da6fb8 100644 --- a/tests/ImageSharp.Benchmarks/Codecs/Jpeg/GrayscaleColorConversion.cs +++ b/tests/ImageSharp.Benchmarks/Codecs/Jpeg/GrayscaleColorConversion.cs @@ -19,14 +19,6 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg new JpegColorConverter.FromGrayscaleBasic(8).ConvertToRgba(values, this.output); } - [Benchmark] - public void SimdVector8() - { - var values = new JpegColorConverter.ComponentValues(this.input, 0); - - new JpegColorConverter.FromGrayscaleVector8(8).ConvertToRgba(values, this.output); - } - [Benchmark] public void SimdVectorAvx2() { diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs index 8662a6192..bcc52de14 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs @@ -184,24 +184,6 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg seed); } - [Theory] - [MemberData(nameof(CommonConversionData))] - public void FromGrayscaleVector8(int inputBufferLength, int resultBufferLength, int seed) - { - if (!SimdUtils.HasVector8) - { - this.Output.WriteLine("No AVX2 present, skipping test!"); - return; - } - - ValidateConversion( - new JpegColorConverter.FromGrayscaleVector8(8), - 1, - inputBufferLength, - resultBufferLength, - seed); - } - [Theory] [MemberData(nameof(CommonConversionData))] public void FromGrayscaleAvx2(int inputBufferLength, int resultBufferLength, int seed)