mirror of
https://github.com/golang/go
synced 2024-11-15 07:20:45 -07:00
74163c895a
The spill/restore code around morestack is almost never exectued, so we should make it as small as possible. Using 2-register loads/stores makes sense here. Also, the offsets from SP are pretty small so the offset almost always fits in the (smaller than a normal load/store) offset field of the instruction. Makes cmd/go 0.6% smaller. Change-Id: I8845283c1b269a259498153924428f6173bda293 Reviewed-on: https://go-review.googlesource.com/c/go/+/621556 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
32 lines
527 B
Go
32 lines
527 B
Go
// asmcheck
|
|
|
|
// Copyright 2024 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package codegen
|
|
|
|
func i64(a, b int64) int64 { // arm64:`STP\s`,`LDP\s`
|
|
g()
|
|
return a + b
|
|
}
|
|
|
|
func i32(a, b int32) int32 { // arm64:`STPW`,`LDPW`
|
|
g()
|
|
return a + b
|
|
}
|
|
|
|
func f64(a, b float64) float64 { // arm64:`FSTPD`,`FLDPD`
|
|
g()
|
|
return a + b
|
|
}
|
|
|
|
func f32(a, b float32) float32 { // arm64:`FSTPS`,`FLDPS`
|
|
g()
|
|
return a + b
|
|
}
|
|
|
|
//go:noinline
|
|
func g() {
|
|
}
|