Browse Source

pin sourceBase in HwIntrinsics ByteToNormalizedFloat

pull/1770/head
Anton Firszov 5 years ago
parent
commit
70dfe761fd
  1. 7
      src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs

7
src/ImageSharp/Common/Helpers/SimdUtils.HwIntrinsics.cs

@ -621,6 +621,8 @@ namespace SixLabors.ImageSharp
internal static unsafe void ByteToNormalizedFloat( internal static unsafe void ByteToNormalizedFloat(
ReadOnlySpan<byte> source, ReadOnlySpan<byte> source,
Span<float> dest) Span<float> dest)
{
fixed (byte* sourceBase = source)
{ {
if (Avx2.IsSupported) if (Avx2.IsSupported)
{ {
@ -628,8 +630,6 @@ namespace SixLabors.ImageSharp
int n = dest.Length / Vector256<byte>.Count; int n = dest.Length / Vector256<byte>.Count;
byte* sourceBase = (byte*)Unsafe.AsPointer(ref MemoryMarshal.GetReference(source));
ref Vector256<float> destBase = ref Vector256<float> destBase =
ref Unsafe.As<float, Vector256<float>>(ref MemoryMarshal.GetReference(dest)); ref Unsafe.As<float, Vector256<float>>(ref MemoryMarshal.GetReference(dest));
@ -663,8 +663,6 @@ namespace SixLabors.ImageSharp
int n = dest.Length / Vector128<byte>.Count; int n = dest.Length / Vector128<byte>.Count;
byte* sourceBase = (byte*)Unsafe.AsPointer(ref MemoryMarshal.GetReference(source));
ref Vector128<float> destBase = ref Vector128<float> destBase =
ref Unsafe.As<float, Vector128<float>>(ref MemoryMarshal.GetReference(dest)); ref Unsafe.As<float, Vector128<float>>(ref MemoryMarshal.GetReference(dest));
@ -709,6 +707,7 @@ namespace SixLabors.ImageSharp
} }
} }
} }
}
/// <summary> /// <summary>
/// <see cref="NormalizedFloatToByteSaturate"/> as many elements as possible, slicing them down (keeping the remainder). /// <see cref="NormalizedFloatToByteSaturate"/> as many elements as possible, slicing them down (keeping the remainder).

Loading…
Cancel
Save