aboutsummaryrefslogtreecommitdiff
path: root/src/internal/bytealg/count_riscv64.s
AgeCommit message (Collapse)Author
2025-05-01internal/bytealg: deduplicate code between Count/CountString for riscv64Joel Sing
Change-Id: I22eb4e7444e5fe5f6767cc960895f3c6e2fa13cc Reviewed-on: https://go-review.googlesource.com/c/go/+/661615 Reviewed-by: Keith Randall <khr@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@golang.org> Auto-Submit: Carlos Amedee <carlos@golang.org> Reviewed-by: Carlos Amedee <carlos@golang.org>
2023-11-22internal/bytealg: optimize Count with PCALIGN in riscv64Meng Zhuo
For #63678 Benchmark on Milk-V Mars CM eMMC (Starfive/JH7110 SoC) goos: linux goarch: riscv64 pkg: bytes │ /root/bytes.old.bench │ /root/bytes.pc16.bench │ │ sec/op │ sec/op vs base │ Count/10 223.9n ± 1% 220.8n ± 1% -1.36% (p=0.001 n=10) Count/32 571.6n ± 0% 571.3n ± 0% ~ (p=0.054 n=10) Count/4K 38.56µ ± 0% 38.55µ ± 0% -0.01% (p=0.010 n=10) Count/4M 40.13m ± 0% 39.21m ± 0% -2.28% (p=0.000 n=10) Count/64M 627.5m ± 0% 627.4m ± 0% -0.01% (p=0.019 n=10) CountEasy/10 101.3n ± 0% 101.3n ± 0% ~ (p=1.000 n=10) ¹ CountEasy/32 139.3n ± 0% 139.3n ± 0% ~ (p=1.000 n=10) ¹ CountEasy/4K 5.565µ ± 0% 5.564µ ± 0% -0.02% (p=0.001 n=10) CountEasy/4M 5.619m ± 0% 5.619m ± 0% ~ (p=0.190 n=10) CountEasy/64M 89.94m ± 0% 89.93m ± 0% ~ (p=0.436 n=10) CountSingle/10 53.80n ± 0% 46.06n ± 0% -14.39% (p=0.000 n=10) CountSingle/32 104.30n ± 0% 79.64n ± 0% -23.64% (p=0.000 n=10) CountSingle/4K 10.413µ ± 0% 7.247µ ± 0% -30.40% (p=0.000 n=10) CountSingle/4M 11.603m ± 0% 8.388m ± 0% -27.71% (p=0.000 n=10) CountSingle/64M 230.9m ± 0% 172.3m ± 0% -25.40% (p=0.000 n=10) CountHard1 9.981m ± 0% 9.981m ± 0% ~ (p=0.810 n=10) CountHard2 9.981m ± 0% 9.981m ± 0% ~ (p=0.315 n=10) CountHard3 9.981m ± 0% 9.981m ± 0% ~ (p=0.159 n=10) geomean 144.6µ 133.5µ -7.70% ¹ all samples are equal │ /root/bytes.old.bench │ /root/bytes.pc16.bench │ │ B/s │ B/s vs base │ Count/10 42.60Mi ± 1% 43.19Mi ± 1% +1.39% (p=0.001 n=10) Count/32 53.38Mi ± 0% 53.42Mi ± 0% +0.06% (p=0.049 n=10) Count/4K 101.3Mi ± 0% 101.3Mi ± 0% ~ (p=0.077 n=10) Count/4M 99.68Mi ± 0% 102.01Mi ± 0% +2.34% (p=0.000 n=10) Count/64M 102.0Mi ± 0% 102.0Mi ± 0% ~ (p=0.076 n=10) CountEasy/10 94.18Mi ± 0% 94.18Mi ± 0% ~ (p=0.054 n=10) CountEasy/32 219.1Mi ± 0% 219.1Mi ± 0% +0.01% (p=0.016 n=10) CountEasy/4K 702.0Mi ± 0% 702.0Mi ± 0% +0.00% (p=0.000 n=10) CountEasy/4M 711.9Mi ± 0% 711.9Mi ± 0% ~ (p=0.133 n=10) CountEasy/64M 711.6Mi ± 0% 711.7Mi ± 0% ~ (p=0.447 n=10) CountSingle/10 177.2Mi ± 0% 207.0Mi ± 0% +16.81% (p=0.000 n=10) CountSingle/32 292.7Mi ± 0% 383.2Mi ± 0% +30.91% (p=0.000 n=10) CountSingle/4K 375.1Mi ± 0% 539.0Mi ± 0% +43.70% (p=0.000 n=10) CountSingle/4M 344.7Mi ± 0% 476.9Mi ± 0% +38.33% (p=0.000 n=10) CountSingle/64M 277.2Mi ± 0% 371.5Mi ± 0% +34.05% (p=0.000 n=10) geomean 199.7Mi 219.8Mi +10.10% Change-Id: I1abf6b220b9802028f8ad5eebc8d3b7cfa3e89ea Reviewed-on: https://go-review.googlesource.com/c/go/+/541756 Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Joel Sing <joel@sing.id.au> Run-TryBot: M Zhuo <mzh@golangcn.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Wang Yaduo <wangyaduo@linux.alibaba.com> Reviewed-by: Mark Ryan <markdryan@rivosinc.com>
2022-10-26all: delete riscv64 non-register ABI fallback pathWayne Zuo
Change-Id: I9e997b59ffb868575b780b9660df1f5ac322b79a Reviewed-on: https://go-review.googlesource.com/c/go/+/443556 Reviewed-by: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org> Reviewed-by: David Chase <drchase@google.com>
2022-05-03internal/bytealg: mask high bit for riscv64 regabiMeng Zhuo
This CL masks byte params which high bits(~0xff) is unused for riscv64 regabi. Currently the compiler only guarantees the low bits contains value. Change-Id: I6dd6c867e60d2143fefde92c866f78c4b007a2f7 Reviewed-on: https://go-review.googlesource.com/c/go/+/402894 Reviewed-by: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: mzh <mzh@golangcn.org> Reviewed-by: Benny Siegert <bsiegert@gmail.com>
2022-04-22internal/bytealg: port bytealg functions to reg ABI on riscv64Meng Zhuo
This CL adds support for the reg ABI to the bytes functions for riscv64. These are initially under control of the GOEXPERIMENT macro until all changes are in. Change-Id: I026295ae38e2aba055f7a51c77f92c1921e5ec97 Reviewed-on: https://go-review.googlesource.com/c/go/+/361916 Run-TryBot: mzh <mzh@golangcn.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
2020-10-19internal/bytealg: add assembly implementation of Count/CountString for riscv64Tobias Klauser
Simple single-byte loop count for now, to be further improved in future CLs. Benchmark on linux/riscv64 (HiFive Unleashed): name old time/op new time/op delta CountSingle/10-4 190ns ± 1% 145ns ± 1% -23.66% (p=0.000 n=10+9) CountSingle/32-4 422ns ± 1% 268ns ± 0% -36.43% (p=0.000 n=10+7) CountSingle/4K-4 43.3µs ± 0% 23.8µs ± 0% -45.09% (p=0.000 n=8+10) CountSingle/4M-4 54.2ms ± 1% 33.3ms ± 1% -38.48% (p=0.000 n=10+10) CountSingle/64M-4 1.52s ± 1% 1.20s ± 1% -21.20% (p=0.000 n=9+9) name old speed new speed delta CountSingle/10-4 52.7MB/s ± 1% 69.1MB/s ± 1% +31.03% (p=0.000 n=10+9) CountSingle/32-4 75.9MB/s ± 1% 119.5MB/s ± 0% +57.34% (p=0.000 n=10+8) CountSingle/4K-4 94.6MB/s ± 0% 172.2MB/s ± 0% +82.10% (p=0.000 n=8+10) CountSingle/4M-4 77.4MB/s ± 1% 125.8MB/s ± 1% +62.54% (p=0.000 n=10+10) CountSingle/64M-4 44.2MB/s ± 1% 56.1MB/s ± 1% +26.91% (p=0.000 n=9+9) Change-Id: I2a6bd50d22d5f598517bb3c5a50066c54280cac5 Reviewed-on: https://go-review.googlesource.com/c/go/+/263541 Trust: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Joel Sing <joel@sing.id.au>