Julian Zhu
5ed494470b
crypto/internal/poly1305: provide optimised assembly for riscv64
...
goos: linux
goarch: riscv64
pkg: golang.org/x/crypto/internal/poly1305
│ sum1305-old │ sum1305-new │
│ sec/op │ sec/op vs base │
64-4 195.9n ± 1% 144.8n ± 0% -26.07% (p=0.000 n=10)
1K-4 1.853µ ± 0% 1.012µ ± 0% -45.39% (p=0.000 n=10)
2M-4 3.627m ± 0% 1.880m ± 0% -48.17% (p=0.000 n=10)
64Unaligned-4 196.4n ± 1% 174.7n ± 0% -11.05% (p=0.000 n=10)
1KUnaligned-4 1.853µ ± 0% 1.491µ ± 0% -19.54% (p=0.000 n=10)
2MUnaligned-4 3.643m ± 0% 2.850m ± 0% -21.78% (p=0.000 n=10)
Write64-4 126.85n ± 0% 77.40n ± 0% -38.98% (p=0.000 n=10)
Write1K-4 1784.5n ± 1% 937.2n ± 0% -47.48% (p=0.000 n=10)
Write2M-4 3.654m ± 2% 1.880m ± 0% -48.55% (p=0.000 n=10)
Write64Unaligned-4 125.7n ± 0% 107.5n ± 0% -14.48% (p=0.000 n=10)
Write1KUnaligned-4 1.782µ ± 0% 1.424µ ± 0% -20.09% (p=0.000 n=10)
Write2MUnaligned-4 3.637m ± 0% 2.850m ± 0% -21.64% (p=0.000 n=10)
geomean 10.14µ 6.925µ -31.68%
│ sum1305-old │ sum1305-new-3 │
│ B/s │ B/s vs base │
64-4 311.7Mi ± 1% 421.5Mi ± 0% +35.25% (p=0.000 n=10)
1K-4 527.0Mi ± 0% 965.0Mi ± 0% +83.10% (p=0.000 n=10)
2M-4 551.4Mi ± 0% 1063.8Mi ± 0% +92.94% (p=0.000 n=10)
64Unaligned-4 310.8Mi ± 1% 349.3Mi ± 0% +12.38% (p=0.000 n=10)
1KUnaligned-4 526.9Mi ± 0% 654.9Mi ± 0% +24.30% (p=0.000 n=10)
2MUnaligned-4 548.9Mi ± 0% 701.8Mi ± 0% +27.85% (p=0.000 n=10)
Write64-4 481.2Mi ± 0% 788.6Mi ± 0% +63.89% (p=0.000 n=10)
Write1K-4 547.2Mi ± 1% 1042.0Mi ± 0% +90.42% (p=0.000 n=10)
Write2M-4 547.4Mi ± 2% 1064.0Mi ± 0% +94.38% (p=0.000 n=10)
Write64Unaligned-4 485.5Mi ± 0% 567.7Mi ± 0% +16.94% (p=0.000 n=10)
Write1KUnaligned-4 547.9Mi ± 0% 685.8Mi ± 0% +25.17% (p=0.000 n=10)
Write2MUnaligned-4 550.0Mi ± 0% 701.9Mi ± 0% +27.62% (p=0.000 n=10)
geomean 485.5Mi 710.7Mi +46.37%
Change-Id: I33a3df03382eb42ef062b0366521f02559290482
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/738760
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com >
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com >
Reviewed-by: Mark Freeman <markfreeman@google.com >
2026-08-03 22:01:12 -07:00
Xiaolin Zhao
b369b723c8
crypto/internal/poly1305: implement function update in assembly on loong64
...
The performance improvements on Loongson-3A5000 and Loongson-3A6000 are as follows:
goos: linux
goarch: loong64
pkg: golang.org/x/crypto/internal/poly1305
cpu: Loongson-3A5000 @ 2500.00MHz
| bench.old | bench.new |
| sec/op | sec/op vs base |
64 122.8n ± 0% 100.0n ± 0% -18.57% (p=0.000 n=10)
1K 1152.0n ± 0% 732.2n ± 0% -36.44% (p=0.000 n=10)
2M 2.356m ± 0% 1.443m ± 0% -38.74% (p=0.000 n=10)
64Unaligned 122.7n ± 0% 101.5n ± 0% -17.24% (p=0.000 n=10)
1KUnaligned 1152.0n ± 0% 745.4n ± 0% -35.30% (p=0.000 n=10)
2MUnaligned 2.336m ± 0% 1.473m ± 0% -36.94% (p=0.000 n=10)
Write64 77.92n ± 0% 54.88n ± 0% -29.57% (p=0.000 n=10)
Write1K 1106.0n ± 0% 683.3n ± 0% -38.22% (p=0.000 n=10)
Write2M 2.356m ± 0% 1.444m ± 0% -38.72% (p=0.000 n=10)
Write64Unaligned 77.87n ± 0% 55.69n ± 0% -28.49% (p=0.000 n=10)
Write1KUnaligned 1106.0n ± 0% 708.1n ± 0% -35.97% (p=0.000 n=10)
Write2MUnaligned 2.335m ± 0% 1.471m ± 0% -37.01% (p=0.000 n=10)
geomean 6.373µ 4.272µ -32.96%
| bench.old | bench.new |
| B/s | B/s vs base |
64 497.1Mi ± 0% 610.3Mi ± 0% +22.78% (p=0.000 n=10)
1K 847.6Mi ± 0% 1333.7Mi ± 0% +57.35% (p=0.000 n=10)
2M 849.0Mi ± 0% 1385.9Mi ± 0% +63.24% (p=0.000 n=10)
64Unaligned 497.4Mi ± 0% 600.9Mi ± 0% +20.81% (p=0.000 n=10)
1KUnaligned 847.6Mi ± 0% 1310.1Mi ± 0% +54.57% (p=0.000 n=10)
2MUnaligned 856.3Mi ± 0% 1357.9Mi ± 0% +58.58% (p=0.000 n=10)
Write64 783.3Mi ± 0% 1112.2Mi ± 0% +41.99% (p=0.000 n=10)
Write1K 882.8Mi ± 0% 1429.1Mi ± 0% +61.88% (p=0.000 n=10)
Write2M 849.0Mi ± 0% 1385.4Mi ± 0% +63.18% (p=0.000 n=10)
Write64Unaligned 783.8Mi ± 0% 1096.1Mi ± 0% +39.85% (p=0.000 n=10)
Write1KUnaligned 882.8Mi ± 0% 1379.0Mi ± 0% +56.20% (p=0.000 n=10)
Write2MUnaligned 856.5Mi ± 0% 1359.9Mi ± 0% +58.76% (p=0.000 n=10)
geomean 772.2Mi 1.125Gi +49.18%
goos: linux
goarch: loong64
pkg: golang.org/x/crypto/internal/poly1305
cpu: Loongson-3A6000-HV @ 2500.00MHz
| bench.old | bench.new |
| sec/op | sec/op vs base |
64 92.06n ± 0% 71.55n ± 0% -22.28% (p=0.000 n=10)
1K 998.4n ± 0% 607.7n ± 0% -39.13% (p=0.000 n=10)
2M 1.976m ± 0% 1.165m ± 0% -41.07% (p=0.000 n=10)
64Unaligned 92.05n ± 0% 71.55n ± 0% -22.27% (p=0.000 n=10)
1KUnaligned 998.3n ± 0% 607.6n ± 0% -39.13% (p=0.000 n=10)
2MUnaligned 1.975m ± 0% 1.222m ± 0% -38.11% (p=0.000 n=10)
Write64 65.24n ± 0% 45.23n ± 0% -30.67% (p=0.000 n=10)
Write1K 970.8n ± 0% 577.6n ± 0% -40.51% (p=0.000 n=10)
Write2M 1.965m ± 0% 1.163m ± 0% -40.81% (p=0.000 n=10)
Write64Unaligned 65.24n ± 0% 45.24n ± 0% -30.66% (p=0.000 n=10)
Write1KUnaligned 970.8n ± 0% 577.6n ± 0% -40.50% (p=0.000 n=10)
Write2MUnaligned 1.965m ± 0% 1.222m ± 0% -37.81% (p=0.000 n=10)
geomean 5.317µ 3.426µ -35.58%
| bench.old | bench.new |
| B/s | B/s vs base |
64 663.0Mi ± 0% 853.1Mi ± 0% +28.67% (p=0.000 n=10)
1K 978.1Mi ± 0% 1606.9Mi ± 0% +64.28% (p=0.000 n=10)
2M 1012.0Mi ± 0% 1717.4Mi ± 0% +69.70% (p=0.000 n=10)
64Unaligned 663.1Mi ± 0% 853.1Mi ± 0% +28.65% (p=0.000 n=10)
1KUnaligned 978.2Mi ± 0% 1607.1Mi ± 0% +64.29% (p=0.000 n=10)
2MUnaligned 1012.6Mi ± 0% 1636.2Mi ± 0% +61.58% (p=0.000 n=10)
Write64 935.5Mi ± 0% 1349.3Mi ± 0% +44.23% (p=0.000 n=10)
Write1K 1005.9Mi ± 0% 1690.9Mi ± 0% +68.09% (p=0.000 n=10)
Write2M 1017.7Mi ± 0% 1719.5Mi ± 0% +68.95% (p=0.000 n=10)
Write64Unaligned 935.6Mi ± 0% 1349.3Mi ± 0% +44.22% (p=0.000 n=10)
Write1KUnaligned 1006.0Mi ± 0% 1690.9Mi ± 0% +68.08% (p=0.000 n=10)
Write2MUnaligned 1017.7Mi ± 0% 1636.4Mi ± 0% +60.80% (p=0.000 n=10)
geomean 925.6Mi 1.403Gi +55.22%
Change-Id: If05a8bfc868b3e6f903ff169eed7a894af741f9b
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/638455
Reviewed-by: David Chase <drchase@google.com >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Junyang Shao <shaojunyang@google.com >
Reviewed-by: abner chenc <chenguoqi@loongson.cn >
2025-03-11 17:59:26 -07:00
Roland Shoemaker
911360c8a4
all: bump golang.org/x/crypto dependencies of asm generators
...
Change-Id: Ieb2f0d45f82647978f0bd1eb47bb347f0bfb7d13
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/649499
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org >
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
2025-02-14 15:32:41 -08:00
Paul E. Murphy
6c21748958
internal/poly1305: extend ppc64le support to ppc64
...
The cipher needs to load the stream in LE order. Use the byte
reversing loads on BE.
Also, remove the unused variable poly1305Mask in the PPC64
asm file too.
Change-Id: Ie90fe7bb0ea7a3bcb76583e0cf9c1e4133499541
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/614298
Reviewed-by: Michael Knyszek <mknyszek@google.com >
Reviewed-by: Archana Ravindar <aravinda@redhat.com >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: David Chase <drchase@google.com >
2024-10-04 20:59:56 +00:00
Garrett Bodley
bcb0f91bbc
internal/poly1305: Port sum_amd64.s to Avo
...
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.
To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.
Commands used to verify Avo output:
GOROOT=$(go env GOROOT)
ASM_PATH="internal/poly1305/sum_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"
go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
<(git cat-file -p "$REFERENCE:$ASM_PATH") \
> /tmp/reference.s
go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
"$ASM_PATH" \
> /tmp/avo.s
normalize(){
awk '{
$1=$2=$3="";
print substr($0,4)
}'
}
diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)
Change-Id: I80212c95d1b05335d7f6b73a3030b6f812f6105b
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/600035
Reviewed-by: Roland Shoemaker <roland@golang.org >
Reviewed-by: Filippo Valsorda <filippo@golang.org >
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
2024-09-04 20:35:25 +00:00
Lynn Boger
1a865804d5
x/crypto/internal/poly1305: improve sum_ppc64le.s
...
This contains a few minor improvements to sum_ppc64le.s
which result in up to 10% performance improvement for
some of the benchmarks in this directory.
- ADDZE followed by ADD can be combined into ADDE
- PCALIGN added to the loop
- Eliminate a few unnecessary register moves
goos: linux
goarch: ppc64le
pkg: golang.org/x/crypto/internal/poly1305
cpu: POWER10
│ poly.orig.out │ poly.out │
│ sec/op │ sec/op vs base │
64 40.34n ± 0% 38.13n ± 0% -5.47% (p=0.002 n=6)
1K 482.2n ± 0% 444.6n ± 0% -7.81% (p=0.002 n=6)
2M 978.4µ ± 0% 879.3µ ± 0% -10.12% (p=0.002 n=6)
64Unaligned 40.35n ± 0% 38.16n ± 0% -5.42% (p=0.002 n=6)
1KUnaligned 482.0n ± 0% 444.2n ± 0% -7.84% (p=0.002 n=6)
2MUnaligned 978.4µ ± 0% 879.4µ ± 0% -10.12% (p=0.002 n=6)
Write64 32.69n ± 0% 30.71n ± 0% -6.04% (p=0.002 n=6)
Write1K 472.4n ± 0% 436.5n ± 0% -7.60% (p=0.002 n=6)
Write2M 978.3µ ± 0% 879.4µ ± 0% -10.11% (p=0.002 n=6)
Write64Unaligned 32.67n ± 0% 30.71n ± 0% -6.00% (p=0.002 n=6)
Write1KUnaligned 472.6n ± 0% 436.4n ± 0% -7.66% (p=0.002 n=6)
Write2MUnaligned 978.5µ ± 0% 879.6µ ± 0% -10.10% (p=0.002 n=6)
geomean 2.569µ 2.367µ -7.87%
Change-Id: I63314e7252ef10fb2d157f623c4bc2e31a63ae32
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/558775
Reviewed-by: David Chase <drchase@google.com >
Reviewed-by: Michael Knyszek <mknyszek@google.com >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Paul Murphy <murp@ibm.com >
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com >
TryBot-Result: Gopher Robot <gobot@golang.org >
Reviewed-by: Than McIntosh <thanm@google.com >
2024-02-15 13:30:21 +00:00
Sebastiaan van Stijn
08396bb92b
internal/poly1305: drop Go 1.12 compatibility
...
Other packages already dropped compatibility with go1.12, so it should be safe to remove it for this package as well.
Change-Id: Ieecc7cd06a0a4e69e8c1c09ef6fefe95d78ceb75
GitHub-Last-Rev: 1971e0309bdd31facbc60d70cd36a91f6a22f4b2
GitHub-Pull-Request: golang/crypto#239
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/448239
Reviewed-by: Joedian Reid <joedian@google.com >
Auto-Submit: Filippo Valsorda <filippo@golang.org >
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Filippo Valsorda <filippo@golang.org >
Reviewed-by: Roland Shoemaker <roland@golang.org >
Reviewed-by: Matthew Dempsky <mdempsky@google.com >
2024-01-02 20:57:09 +00:00
Dmitri Shuralyov
8779cbd1c9
all: update go directive to 1.18
...
Done with:
go get go@1.18
go mod tidy
go fix ./...
Using go1.21.3.
Also update avo to v0.5.0 in the curve25519/internal/field/_asm module.
It's newer and produces no diff in the generated code.
For golang/go#60268 .
Change-Id: I9bd771ee8561595d7f68aaca76df6e3e33d35013
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/534141
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com >
Reviewed-by: Damien Neil <dneil@google.com >
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org >
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com >
2023-10-11 22:02:22 +00:00
Russ Cox
7b82a4e95d
all: gofmt
...
Gofmt to update doc comments to the new formatting.
For golang/go#51082 .
Change-Id: I076031b6613691eefbb0f21739366e3fd2011ec9
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/399356
Run-TryBot: Russ Cox <rsc@golang.org >
TryBot-Result: Gopher Robot <gobot@golang.org >
Auto-Submit: Russ Cox <rsc@golang.org >
Reviewed-by: Ian Lance Taylor <iant@google.com >
2022-04-11 22:02:26 +00:00
Yasuhiro Matsumoto
84f357641f
all: fix typos
...
Change-Id: Ie08e43ae603cf2c691d51be0bfb5d164c8fd45ff
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/337189
Reviewed-by: Ian Lance Taylor <iant@golang.org >
Trust: Cherry Mui <cherryyz@google.com >
2021-09-20 02:37:35 +00:00
Filippo Valsorda
c084706c22
poly1305: deprecate public package
...
Fixes golang/go#36646
Change-Id: Ic19dd2171c84472fc9d3f44803224b87fc5c0417
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/345649
Trust: Filippo Valsorda <filippo@golang.org >
Trust: Katie Hockman <katie@golang.org >
Run-TryBot: Filippo Valsorda <filippo@golang.org >
TryBot-Result: Go Bot <gobot@golang.org >
Reviewed-by: Roland Shoemaker <roland@golang.org >
Reviewed-by: Katie Hockman <katie@golang.org >
2021-09-15 21:47:49 +00:00