From 6532552b6b8041a7b33f0392476014da29da1208 Mon Sep 17 00:00:00 2001 From: Dmitry Pentin Date: Tue, 28 Sep 2021 18:50:50 +0300 Subject: [PATCH] Naming fix & simd else if branch --- .../Jpeg/Components/Block8x8F.Intrinsic.cs | 2 +- .../Formats/Jpeg/Components/Block8x8F.cs | 10 ++++---- .../FastFloatingPointDCT.Intrinsic.cs | 24 +++++++++---------- .../Jpeg/Components/FastFloatingPointDCT.cs | 4 ++-- .../BlockOperations/Block8x8F_Transpose.cs | 4 ++-- .../Formats/Jpg/Block8x8FTests.cs | 4 ++-- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Intrinsic.cs b/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Intrinsic.cs index e788024721..5a00ccd3dd 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Intrinsic.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Intrinsic.cs @@ -77,7 +77,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components } } - private void TransposeAvx() + private void Transpose_Avx() { // https://stackoverflow.com/questions/25622745/transpose-an-8x8-float-using-avx-avx2/25627536#25627536 Vector256 r0 = Avx.InsertVector128( diff --git a/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.cs b/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.cs index 986af34178..1d2b19a7b3 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Block8x8F.cs @@ -612,25 +612,25 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components /// Transpose the block inplace. /// [MethodImpl(InliningOptions.ShortMethod)] - public void Transpose() + public void TransposeInplace() { #if SUPPORTS_RUNTIME_INTRINSICS if (Avx.IsSupported) { - this.TransposeAvx(); + this.Transpose_Avx(); } else #endif { - this.TransposeScalar(); + this.TransposeInplace_Scalar(); } } /// - /// Scalar inplace transpose implementation for + /// Scalar inplace transpose implementation for /// [MethodImpl(InliningOptions.ShortMethod)] - private void TransposeScalar() + private void TransposeInplace_Scalar() { float tmp; int horIndex, verIndex; diff --git a/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.Intrinsic.cs b/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.Intrinsic.cs index 7a2b0a78cd..0ebe9dbf95 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.Intrinsic.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.Intrinsic.cs @@ -45,33 +45,33 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components DebugGuard.IsTrue(Avx.IsSupported || Sse.IsSupported, "Avx or at least Sse support is required to execute this operation."); // First pass - process rows - block.Transpose(); + block.TransposeInplace(); if (Avx.IsSupported) { - FDCT8x8_avx(ref block); + FDCT8x8_Avx(ref block); } - else if (Sse.IsSupported) + else { // Left part - FDCT8x4_sse(ref Unsafe.As>(ref block.V0L)); + FDCT8x4_Sse(ref Unsafe.As>(ref block.V0L)); // Right part - FDCT8x4_sse(ref Unsafe.As>(ref block.V0R)); + FDCT8x4_Sse(ref Unsafe.As>(ref block.V0R)); } // Second pass - process columns - block.Transpose(); + block.TransposeInplace(); if (Avx.IsSupported) { - FDCT8x8_avx(ref block); + FDCT8x8_Avx(ref block); } - else if (Sse.IsSupported) + else { // Left part - FDCT8x4_sse(ref Unsafe.As>(ref block.V0L)); + FDCT8x4_Sse(ref Unsafe.As>(ref block.V0L)); // Right part - FDCT8x4_sse(ref Unsafe.As>(ref block.V0R)); + FDCT8x4_Sse(ref Unsafe.As>(ref block.V0R)); } } @@ -83,7 +83,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components /// Must be called on both 8x4 matrix parts for the full FDCT transform. /// /// Input reference to the first - public static void FDCT8x4_sse(ref Vector128 blockRef) + public static void FDCT8x4_Sse(ref Vector128 blockRef) { DebugGuard.IsTrue(Sse.IsSupported, "Sse support is required to execute this operation."); @@ -135,7 +135,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components /// Requires Avx support. /// /// Input matrix. - public static void FDCT8x8_avx(ref Block8x8F block) + public static void FDCT8x8_Avx(ref Block8x8F block) { DebugGuard.IsTrue(Avx.IsSupported, "Avx support is required to execute this operation."); diff --git a/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.cs b/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.cs index 4f7db7c59c..51f29fd51d 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/FastFloatingPointDCT.cs @@ -88,9 +88,9 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components /// Matrix to store temporal results. public static void TransformIDCT(ref Block8x8F block, ref Block8x8F temp) { - block.Transpose(); + block.TransposeInplace(); IDCT8x8(ref block, ref temp); - temp.Transpose(); + temp.TransposeInplace(); IDCT8x8(ref temp, ref block); // TODO: This can be fused into quantization table step diff --git a/tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_Transpose.cs b/tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_Transpose.cs index 28899b51e4..f60121d330 100644 --- a/tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_Transpose.cs +++ b/tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_Transpose.cs @@ -12,9 +12,9 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg.BlockOperations private Block8x8F source = Create8x8FloatData(); [Benchmark] - public float TransposeInto() + public float TransposeInplace() { - this.source.Transpose(); + this.source.TransposeInplace(); return this.source[0]; } diff --git a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs index 40e42acb31..d01b4b501c 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs @@ -166,7 +166,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg } [Fact] - public void Transpose() + public void TransposeInplace() { static void RunTest() { @@ -176,7 +176,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg var block8x8 = default(Block8x8F); block8x8.LoadFrom(Create8x8FloatData()); - block8x8.Transpose(); + block8x8.TransposeInplace(); float[] actual = new float[64]; block8x8.ScaledCopyTo(actual);