Skip to content
Snippets Groups Projects
  • Joel Sing's avatar
    6d55a017
    crypto/sha256: provide optimised assembly for riscv64 · 6d55a017
    Joel Sing authored
    Provide an optimised assembly implementation of sha256 for riscv64.
    This results in considerable performance gains.
    
    On a StarFive VisionFive 2:
    
                        │   sha256.1   │              sha256.2               │
                        │    sec/op    │   sec/op     vs base                │
    Hash8Bytes/New-4       7.820µ ± 0%   5.193µ ± 0%  -33.59% (p=0.000 n=10)
    Hash8Bytes/Sum224-4    7.918µ ± 0%   5.294µ ± 0%  -33.15% (p=0.000 n=10)
    Hash8Bytes/Sum256-4    7.950µ ± 0%   5.320µ ± 0%  -33.08% (p=0.000 n=10)
    Hash1K/New-4          108.03µ ± 0%   66.12µ ± 0%  -38.79% (p=0.000 n=10)
    Hash1K/Sum224-4       108.12µ ± 0%   66.22µ ± 0%  -38.76% (p=0.000 n=10)
    Hash1K/Sum256-4       108.15µ ± 0%   66.24µ ± 0%  -38.75% (p=0.000 n=10)
    Hash8K/New-4           808.5µ ± 0%   493.0µ ± 0%  -39.02% (p=0.000 n=10)
    Hash8K/Sum224-4        808.6µ ± 0%   493.1µ ± 0%  -39.02% (p=0.000 n=10)
    Hash8K/Sum256-4        808.6µ ± 0%   493.1µ ± 0%  -39.02% (p=0.000 n=10)
    geomean                88.37µ        55.61µ       -37.08%
    
                        │   sha256.1   │               sha256.2                │
                        │     B/s      │      B/s       vs base                │
    Hash8Bytes/New-4      996.1Ki ± 0%   1503.9Ki ± 0%  +50.98% (p=0.000 n=10)
    Hash8Bytes/Sum224-4   986.3Ki ± 0%   1474.6Ki ± 0%  +49.50% (p=0.000 n=10)
    Hash8Bytes/Sum256-4   986.3Ki ± 0%   1464.8Ki ± 0%  +48.51% (p=0.000 n=10)
    Hash1K/New-4          9.041Mi ± 0%   14.772Mi ± 0%  +63.40% (p=0.000 n=10)
    Hash1K/Sum224-4       9.031Mi ± 0%   14.744Mi ± 0%  +63.25% (p=0.000 n=10)
    Hash1K/Sum256-4       9.031Mi ± 0%   14.744Mi ± 0%  +63.25% (p=0.000 n=10)
    Hash8K/New-4          9.661Mi ± 0%   15.850Mi ± 0%  +64.07% (p=0.000 n=10)
    Hash8K/Sum224-4       9.661Mi ± 0%   15.841Mi ± 0%  +63.97% (p=0.000 n=10)
    Hash8K/Sum256-4       9.661Mi ± 0%   15.841Mi ± 0%  +63.97% (p=0.000 n=10)
    geomean               4.386Mi         6.966Mi       +58.85%
    
    Change-Id: Ieead7b7c02291d70ddc472a7a8cf3c044c1da4b3
    Reviewed-on: https://go-review.googlesource.com/c/go/+/519695
    
    
    Reviewed-by: default avatarMark Ryan <markdryan@rivosinc.com>
    Reviewed-by: default avatarDavid Chase <drchase@google.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    Reviewed-by: default avatarMeng Zhuo <mengzhuo1203@gmail.com>
    Reviewed-by: default avatarCherry Mui <cherryyz@google.com>
    6d55a017
    History
    crypto/sha256: provide optimised assembly for riscv64
    Joel Sing authored
    Provide an optimised assembly implementation of sha256 for riscv64.
    This results in considerable performance gains.
    
    On a StarFive VisionFive 2:
    
                        │   sha256.1   │              sha256.2               │
                        │    sec/op    │   sec/op     vs base                │
    Hash8Bytes/New-4       7.820µ ± 0%   5.193µ ± 0%  -33.59% (p=0.000 n=10)
    Hash8Bytes/Sum224-4    7.918µ ± 0%   5.294µ ± 0%  -33.15% (p=0.000 n=10)
    Hash8Bytes/Sum256-4    7.950µ ± 0%   5.320µ ± 0%  -33.08% (p=0.000 n=10)
    Hash1K/New-4          108.03µ ± 0%   66.12µ ± 0%  -38.79% (p=0.000 n=10)
    Hash1K/Sum224-4       108.12µ ± 0%   66.22µ ± 0%  -38.76% (p=0.000 n=10)
    Hash1K/Sum256-4       108.15µ ± 0%   66.24µ ± 0%  -38.75% (p=0.000 n=10)
    Hash8K/New-4           808.5µ ± 0%   493.0µ ± 0%  -39.02% (p=0.000 n=10)
    Hash8K/Sum224-4        808.6µ ± 0%   493.1µ ± 0%  -39.02% (p=0.000 n=10)
    Hash8K/Sum256-4        808.6µ ± 0%   493.1µ ± 0%  -39.02% (p=0.000 n=10)
    geomean                88.37µ        55.61µ       -37.08%
    
                        │   sha256.1   │               sha256.2                │
                        │     B/s      │      B/s       vs base                │
    Hash8Bytes/New-4      996.1Ki ± 0%   1503.9Ki ± 0%  +50.98% (p=0.000 n=10)
    Hash8Bytes/Sum224-4   986.3Ki ± 0%   1474.6Ki ± 0%  +49.50% (p=0.000 n=10)
    Hash8Bytes/Sum256-4   986.3Ki ± 0%   1464.8Ki ± 0%  +48.51% (p=0.000 n=10)
    Hash1K/New-4          9.041Mi ± 0%   14.772Mi ± 0%  +63.40% (p=0.000 n=10)
    Hash1K/Sum224-4       9.031Mi ± 0%   14.744Mi ± 0%  +63.25% (p=0.000 n=10)
    Hash1K/Sum256-4       9.031Mi ± 0%   14.744Mi ± 0%  +63.25% (p=0.000 n=10)
    Hash8K/New-4          9.661Mi ± 0%   15.850Mi ± 0%  +64.07% (p=0.000 n=10)
    Hash8K/Sum224-4       9.661Mi ± 0%   15.841Mi ± 0%  +63.97% (p=0.000 n=10)
    Hash8K/Sum256-4       9.661Mi ± 0%   15.841Mi ± 0%  +63.97% (p=0.000 n=10)
    geomean               4.386Mi         6.966Mi       +58.85%
    
    Change-Id: Ieead7b7c02291d70ddc472a7a8cf3c044c1da4b3
    Reviewed-on: https://go-review.googlesource.com/c/go/+/519695
    
    
    Reviewed-by: default avatarMark Ryan <markdryan@rivosinc.com>
    Reviewed-by: default avatarDavid Chase <drchase@google.com>
    LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
    Reviewed-by: default avatarMeng Zhuo <mengzhuo1203@gmail.com>
    Reviewed-by: default avatarCherry Mui <cherryyz@google.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.