cmd/internal/obj/loong64: use the MOVVP instruction to optimize prologue

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>
This commit is contained in:
Xiaolin Zhao 2025-09-11 16:30:38 +08:00 committed by abner chenc
parent 6b8d507508
commit eb7c67fdc9

View 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