aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
authorJoel Sing <joel@sing.id.au>2024-08-19 23:57:56 +1000
committerJoel Sing <joel@sing.id.au>2025-03-28 01:27:22 -0700
commite6c2e12c63db5b24724db873009373af413cd1ea (patch)
tree554f9d18c1804a2e5b6b0ad371d2f8ded3a44233 /test/codegen
parentcfc784a152ebbc4fc0b8bf13c02e0f6eb9c980bd (diff)
downloadgo-e6c2e12c63db5b24724db873009373af413cd1ea.tar.xz
cmd/compile/internal/ssa: optimise more branches with zero on riscv64
Optimise more branches with zero on riscv64. In particular, BLTU with zero occurs with IsInBounds checks for index zero. This currently results in two instructions and requires an additional register: li t2, 0 bltu t2, t1, 0x174b4 This is equivalent to checking if the bounds is not equal to zero. With this change: bnez t1, 0x174c0 This removes more than 500 instructions from the Go binary on riscv64. Change-Id: I6cd861d853e3ef270bd46dacecdfaa205b1c4644 Reviewed-on: https://go-review.googlesource.com/c/go/+/606715 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/compare_and_branch.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/codegen/compare_and_branch.go b/test/codegen/compare_and_branch.go
index c121f1d2cc..759dd26358 100644
--- a/test/codegen/compare_and_branch.go
+++ b/test/codegen/compare_and_branch.go
@@ -241,4 +241,14 @@ func ui64x0(x chan uint64) {
for <-x < 1 {
dummy()
}
+
+ // riscv64:"BNEZ"
+ for 0 < <-x {
+ dummy()
+ }
+
+ // riscv64:"BEQZ"
+ for 0 >= <-x {
+ dummy()
+ }
}