From bde9324f17e4367cf94114244191ae66cfa831a7 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Sun, 19 Feb 2023 15:58:47 +1000 Subject: [PATCH] Use Permute --- .../PixelFormats/PixelBlenders/PorterDuffFunctions.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs index 3fe375344e..fa497c8726 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs @@ -291,8 +291,8 @@ internal static partial class PorterDuffFunctions public static Vector256 Over(Vector256 destination, Vector256 source, Vector256 blend) { // calculate weights - Vector256 sW = Avx.Shuffle(source, source, ShuffleAlphaControl); - Vector256 dW = Avx.Shuffle(destination, destination, ShuffleAlphaControl); + Vector256 sW = Avx.Permute(source, ShuffleAlphaControl); + Vector256 dW = Avx.Permute(destination, ShuffleAlphaControl); Vector256 blendW = Avx.Multiply(sW, dW); Vector256 dstW = Avx.Subtract(dW, blendW); @@ -392,9 +392,7 @@ internal static partial class PorterDuffFunctions public static Vector256 In(Vector256 destination, Vector256 source) { // calculate alpha - Vector256 sW = Avx.Shuffle(source, source, ShuffleAlphaControl); - Vector256 dW = Avx.Shuffle(destination, destination, ShuffleAlphaControl); - Vector256 alpha = Avx.Multiply(sW, dW); + Vector256 alpha = Avx.Permute(Avx.Multiply(source, destination), ShuffleAlphaControl); // premultiply Vector256 color = Avx.Multiply(source, alpha);