aboutsummaryrefslogtreecommitdiff
path: root/src/bytes
diff options
context:
space:
mode:
authorLynn Boger <laboger@linux.vnet.ibm.com>2023-04-11 14:49:29 -0500
committerLynn Boger <laboger@linux.vnet.ibm.com>2023-10-09 18:53:44 +0000
commita8ca649bbee624093392bc5556fb12ddd767bab6 (patch)
tree560da1f38219ee8fa95fe14a3f2583cb76522ba5 /src/bytes
parente0948d825d8dab1a685bcb94bfc9ad69b9b6c075 (diff)
downloadgo-a8ca649bbee624093392bc5556fb12ddd767bab6.tar.xz
crypto/aes,crypto/cipher: improve gcm performance on ppc64x
This improves performance for AES-GCM. The function counterCrypt is written in assembler so the loop can be unrolled and the stitched approach used for the encryption. This implementation works on ppc64le and ppc64. The use of GOPPC64=power9 generates the best performance, goos: linux goarch: ppc64le pkg: crypto/cipher cpu: POWER10 │ gcmx8.cpu1.out │ gcmx8.new.cpu1.out │ │ sec/op │ sec/op vs base │ AESGCM/Open-128-64 180.5n ± 0% 152.7n ± 1% -15.43% (p=0.000 n=8) AESGCM/Seal-128-64 166.8n ± 0% 147.2n ± 0% -11.72% (p=0.000 n=8) AESGCM/Open-256-64 194.9n ± 0% 156.6n ± 1% -19.65% (p=0.000 n=8) AESGCM/Seal-256-64 183.7n ± 0% 157.0n ± 0% -14.51% (p=0.000 n=8) AESGCM/Open-128-1350 1769.5n ± 0% 454.5n ± 0% -74.31% (p=0.000 n=8) AESGCM/Seal-128-1350 1759.0n ± 0% 453.7n ± 0% -74.21% (p=0.000 n=8) AESGCM/Open-256-1350 2104.0n ± 0% 504.4n ± 1% -76.03% (p=0.000 n=8) AESGCM/Seal-256-1350 2092.0n ± 0% 503.0n ± 0% -75.96% (p=0.000 n=8) AESGCM/Open-128-8192 10.054µ ± 0% 1.961µ ± 0% -80.50% (p=0.000 n=8) AESGCM/Seal-128-8192 10.050µ ± 0% 1.965µ ± 0% -80.45% (p=0.000 n=8) AESGCM/Open-256-8192 12.080µ ± 0% 2.232µ ± 0% -81.52% (p=0.000 n=8) AESGCM/Seal-256-8192 12.069µ ± 0% 2.238µ ± 0% -81.46% (p=0.000 n=8) geomean 1.566µ 535.5n -65.80% │ gcmx8.cpu1.out │ gcmx8.new.cpu1.out │ │ B/s │ B/s vs base │ AESGCM/Open-128-64 338.1Mi ± 0% 399.8Mi ± 1% +18.27% (p=0.000 n=8) AESGCM/Seal-128-64 366.1Mi ± 0% 414.6Mi ± 0% +13.28% (p=0.000 n=8) AESGCM/Open-256-64 313.1Mi ± 0% 389.7Mi ± 0% +24.47% (p=0.000 n=8) AESGCM/Seal-256-64 332.3Mi ± 0% 388.5Mi ± 0% +16.93% (p=0.000 n=8) AESGCM/Open-128-1350 727.6Mi ± 0% 2832.8Mi ± 0% +289.33% (p=0.000 n=8) AESGCM/Seal-128-1350 732.0Mi ± 0% 2837.8Mi ± 0% +287.70% (p=0.000 n=8) AESGCM/Open-256-1350 611.9Mi ± 0% 2552.6Mi ± 0% +317.18% (p=0.000 n=8) AESGCM/Seal-256-1350 615.3Mi ± 0% 2559.6Mi ± 0% +315.97% (p=0.000 n=8) AESGCM/Open-128-8192 777.1Mi ± 0% 3983.5Mi ± 0% +412.63% (p=0.000 n=8) AESGCM/Seal-128-8192 777.3Mi ± 0% 3975.9Mi ± 0% +411.47% (p=0.000 n=8) AESGCM/Open-256-8192 646.7Mi ± 0% 3500.6Mi ± 0% +441.27% (p=0.000 n=8) AESGCM/Seal-256-8192 647.3Mi ± 0% 3491.1Mi ± 0% +439.30% (p=0.000 n=8) geomean 542.7Mi 1.550Gi +192.42% Change-Id: I3600831a263ec8a99b5e3bdd495eb36e966d8075 Reviewed-on: https://go-review.googlesource.com/c/go/+/484575 Reviewed-by: Roland Shoemaker <roland@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> Reviewed-by: Paul Murphy <murp@ibm.com> Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/bytes')
0 files changed, 0 insertions, 0 deletions