|
|
@ -3,6 +3,7 @@ |
|
|
|
|
|
|
|
|
using System; |
|
|
using System; |
|
|
using System.Buffers.Binary; |
|
|
using System.Buffers.Binary; |
|
|
|
|
|
using System.Numerics; |
|
|
using System.Runtime.CompilerServices; |
|
|
using System.Runtime.CompilerServices; |
|
|
using System.Runtime.InteropServices; |
|
|
using System.Runtime.InteropServices; |
|
|
|
|
|
|
|
|
@ -157,7 +158,7 @@ namespace SixLabors.ImageSharp |
|
|
|
|
|
|
|
|
// packed = [W Z Y X]
|
|
|
// packed = [W Z Y X]
|
|
|
// ROTR(8, packedArgb) = [Y Z W X]
|
|
|
// ROTR(8, packedArgb) = [Y Z W X]
|
|
|
Unsafe.Add(ref dBase, i) = Numerics.RotateRight(packed, 8); |
|
|
Unsafe.Add(ref dBase, i) = BitOperations.RotateRight(packed, 8); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -188,7 +189,7 @@ namespace SixLabors.ImageSharp |
|
|
// tmp1 + tmp3 = [W X Y Z]
|
|
|
// tmp1 + tmp3 = [W X Y Z]
|
|
|
uint tmp1 = packed & 0xFF00FF00; |
|
|
uint tmp1 = packed & 0xFF00FF00; |
|
|
uint tmp2 = packed & 0x00FF00FF; |
|
|
uint tmp2 = packed & 0x00FF00FF; |
|
|
uint tmp3 = Numerics.RotateLeft(tmp2, 16); |
|
|
uint tmp3 = BitOperations.RotateLeft(tmp2, 16); |
|
|
|
|
|
|
|
|
Unsafe.Add(ref dBase, i) = tmp1 + tmp3; |
|
|
Unsafe.Add(ref dBase, i) = tmp1 + tmp3; |
|
|
} |
|
|
} |
|
|
@ -221,7 +222,7 @@ namespace SixLabors.ImageSharp |
|
|
// tmp1 + tmp3 = [Y Z W X]
|
|
|
// tmp1 + tmp3 = [Y Z W X]
|
|
|
uint tmp1 = packed & 0x00FF00FF; |
|
|
uint tmp1 = packed & 0x00FF00FF; |
|
|
uint tmp2 = packed & 0xFF00FF00; |
|
|
uint tmp2 = packed & 0xFF00FF00; |
|
|
uint tmp3 = Numerics.RotateLeft(tmp2, 16); |
|
|
uint tmp3 = BitOperations.RotateLeft(tmp2, 16); |
|
|
|
|
|
|
|
|
Unsafe.Add(ref dBase, i) = tmp1 + tmp3; |
|
|
Unsafe.Add(ref dBase, i) = tmp1 + tmp3; |
|
|
} |
|
|
} |
|
|
|