mirror of
https://github.com/aaru-dps/AaruBenchmark.git
synced 2025-12-16 19:24:36 +00:00
Add ARM vmull implementation for CRC32.
This commit is contained in:
@@ -35,9 +35,9 @@ using System.IO;
|
||||
using System.Runtime.Intrinsics.Arm;
|
||||
using System.Runtime.Intrinsics.X86;
|
||||
using System.Text;
|
||||
using Aaru6.Checksums.CRC32;
|
||||
using Aaru.CommonTypes.Interfaces;
|
||||
using Aaru.Helpers;
|
||||
using Aaru6.Checksums.CRC32;
|
||||
|
||||
namespace Aaru6.Checksums
|
||||
{
|
||||
@@ -449,6 +449,23 @@ namespace Aaru6.Checksums
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(AdvSimd.IsSupported)
|
||||
{
|
||||
// Only works in blocks of 16 bytes
|
||||
uint blocks = len / 64;
|
||||
|
||||
if(blocks > 0)
|
||||
{
|
||||
previousCrc = ~Vmull.Step(data, blocks * 64, ~previousCrc);
|
||||
|
||||
currentPos = (int)(blocks * 64);
|
||||
len -= blocks * 64;
|
||||
}
|
||||
|
||||
if(len == 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Unroll according to Intel slicing by uint8_t
|
||||
|
||||
Reference in New Issue
Block a user