]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/loong64: use the MOVVP instruction to optimize prologue
authorXiaolin Zhao <zhaoxiaolin@loongson.cn>
Thu, 11 Sep 2025 08:30:38 +0000 (16:30 +0800)
committerabner chenc <chenguoqi@loongson.cn>
Tue, 16 Sep 2025 02:13:50 +0000 (19:13 -0700)
The MOVVP instruction has a larger offset range, and removes 928
instructions from the go binary on loong64.

file        before      after       Δ
go          1634208     1634064    -144
gofmt       323324      323240     -84
asm         567870      567778     -92
cgo         487694      487598     -96
compile     2500266     2500142    -124
cover       530590      530498     -92
link        723804      723692     -112
preprofile  240562      240474     -88
vet         819672      819576     -96

Change-Id: Ib0efcb006d3ae3f2bceec0d6e88f3794d5e99831
Reviewed-on: https://go-review.googlesource.com/c/go/+/702715
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: Mark Freeman <markfreeman@google.com>
Reviewed-by: Meidan Li <limeidan@loongson.cn>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/internal/obj/loong64/obj.go

index a97217d31657cfcdf6029f6816721aa656e0592e..ea110f00cbe4fb36919d1df5f2ff8c0a58c1cce9 100644 (file)
@@ -324,7 +324,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
                                q = c.ctxt.StartUnsafePoint(q, c.newprog)
 
                                q = obj.Appendp(q, newprog)
-                               q.As = mov
+                               q.As = AMOVVP
                                q.Pos = p.Pos
                                q.From.Type = obj.TYPE_REG
                                q.From.Reg = REGLINK