diff options
| author | Guoqi Chen <chenguoqi@loongson.cn> | 2026-01-22 10:44:19 +0800 |
|---|---|---|
| committer | abner chenc <chenguoqi@loongson.cn> | 2026-01-28 06:42:05 -0800 |
| commit | 134035855cbc84e25765c2a4af3d152aaf430c5c (patch) | |
| tree | 1aa4c413e8920e2da4a6b23b563635a2fba0fc50 | |
| parent | f65fe3216ef67b4318f8da475ec59418dfc4fb5d (diff) | |
| download | go-134035855cbc84e25765c2a4af3d152aaf430c5c.tar.xz | |
cmd/compile: simplify slice/array range loops on loong64
loong64 supports R+R addressing ({st,ld}x.{b,h,w,d} instructions)
and has implemented the relevant lowering rules (only width is 1).
Removes 1616 instructions from the go binary on loong64.
file before after Δ %
asm 575366 575314 -52 -0.0090%
cgo 489972 489884 -88 -0.0180%
compile 2920418 2920110 -308 -0.0105%
cover 540458 540290 -168 -0.0311%
fix 865840 865668 -172 -0.0199%
link 732858 732662 -196 -0.0267%
preprofile 246022 245978 -44 -0.0179%
vet 839268 839124 -144 -0.0172%
go 1666470 1666114 -356 -0.0214%
gofmt 326526 326438 -88 -0.0270%
total 9203198 9201582 -1616 -0.0176%
Change-Id: If3518547c785764877a6cf987781d43d8b572990
Reviewed-on: https://go-review.googlesource.com/c/go/+/738240
Reviewed-by: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
| -rw-r--r-- | src/cmd/compile/internal/walk/range.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/walk/range.go b/src/cmd/compile/internal/walk/range.go index 139343a8ed..866dd23def 100644 --- a/src/cmd/compile/internal/walk/range.go +++ b/src/cmd/compile/internal/walk/range.go @@ -23,7 +23,7 @@ func cheapComputableIndex(width int64) bool { // MIPS does not have R+R addressing // Arm64 may lack ability to generate this code in our assembler, // but the architecture supports it. - case sys.PPC64, sys.S390X: + case sys.Loong64, sys.PPC64, sys.S390X: return width == 1 case sys.AMD64, sys.I386, sys.ARM64, sys.ARM: switch width { |
