• Lynn Boger's avatar
    hash/crc32: improve performance for ppc64le · b6cd22c2
    Lynn Boger authored
    This change improves the performance of crc32 for ppc64le by using
    vpmsum and other vector instructions in the algorithm.
    
    The testcase was updated to test more sizes.
    
    Fixes #19570
    
    BenchmarkCRC32/poly=IEEE/size=15/align=0-8             90.5          81.8          -9.61%
    BenchmarkCRC32/poly=IEEE/size=15/align=1-8             89.7          81.7          -8.92%
    BenchmarkCRC32/poly=IEEE/size=40/align=0-8             93.2          61.1          -34.44%
    BenchmarkCRC32/poly=IEEE/size=40/align=1-8             92.8          60.9          -34.38%
    BenchmarkCRC32/poly=IEEE/size=512/align=0-8            501           55.8          -88.86%
    BenchmarkCRC32/poly=IEEE/size=512/align=1-8            502           132           -73.71%
    BenchmarkCRC32/poly=IEEE/size=1kB/align=0-8            947           69.9          -92.62%
    BenchmarkCRC32/poly=IEEE/size=1kB/align=1-8            946           144           -84.78%
    BenchmarkCRC32/poly=IEEE/size=4kB/align=0-8            3602          186           -94.84%
    BenchmarkCRC32/poly=IEEE/size=4kB/align=1-8            3603          263           -92.70%
    BenchmarkCRC32/poly=IEEE/size=32kB/align=0-8           28404         1338          -95.29%
    BenchmarkCRC32/poly=IEEE/size=32kB/align=1-8           28856         1405          -95.13%
    BenchmarkCRC32/poly=Castagnoli/size=15/align=0-8       89.7          81.8          -8.81%
    BenchmarkCRC32/poly=Castagnoli/size=15/align=1-8       89.8          81.9          -8.80%
    BenchmarkCRC32/poly=Castagnoli/size=40/align=0-8       93.8          61.4          -34.54%
    BenchmarkCRC32/poly=Castagnoli/size=40/align=1-8       94.3          61.3          -34.99%
    BenchmarkCRC32/poly=Castagnoli/size=512/align=0-8      503           56.4          -88.79%
    BenchmarkCRC32/poly=Castagnoli/size=512/align=1-8      502           132           -73.71%
    BenchmarkCRC32/poly=Castagnoli/size=1kB/align=0-8      941           70.2          -92.54%
    BenchmarkCRC32/poly=Castagnoli/size=1kB/align=1-8      943           145           -84.62%
    BenchmarkCRC32/poly=Castagnoli/size=4kB/align=0-8      3588          186           -94.82%
    BenchmarkCRC32/poly=Castagnoli/size=4kB/align=1-8      3595          264           -92.66%
    BenchmarkCRC32/poly=Castagnoli/size=32kB/align=0-8     28266         1323          -95.32%
    BenchmarkCRC32/poly=Castagnoli/size=32kB/align=1-8     28344         1404          -95.05%
    
    Change-Id: Ic4d8274c66e0e87bfba5f609f508a3877aee6bb5
    Reviewed-on: https://go-review.googlesource.com/38184Reviewed-by: 's avatarDavid Chase <drchase@google.com>
    b6cd22c2
crc32_test.go 7.6 KB