aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
authorXiaolin Zhao <zhaoxiaolin@loongson.cn>2024-04-10 11:48:11 +0800
committerabner chenc <chenguoqi@loongson.cn>2024-08-07 01:16:28 +0000
commitff14e08cd3c4423ae6c243ef20a3b9b4c04335ed (patch)
treec707cbdbf2f3c2b5331e68e7922a6f2a8617d94e /test/codegen
parent36e5c84ffa8b64727b01f056b550c235636c123a (diff)
downloadgo-ff14e08cd3c4423ae6c243ef20a3b9b4c04335ed.tar.xz
cmd/compile, math: improve implementation of math.{Max,Min} on loong64
Make math.{Min,Max} intrinsics and implement math.{archMax,archMin} in hardware. goos: linux goarch: loong64 pkg: math cpu: Loongson-3A6000 @ 2500.00MHz │ old.bench │ new.bench │ │ sec/op │ sec/op vs base │ Max 7.606n ± 0% 3.087n ± 0% -59.41% (p=0.000 n=20) Min 7.205n ± 0% 2.904n ± 0% -59.69% (p=0.000 n=20) MinFloat 37.220n ± 0% 4.802n ± 0% -87.10% (p=0.000 n=20) MaxFloat 33.620n ± 0% 4.802n ± 0% -85.72% (p=0.000 n=20) geomean 16.18n 3.792n -76.57% goos: linux goarch: loong64 pkg: runtime cpu: Loongson-3A5000 @ 2500.00MHz │ old.bench │ new.bench │ │ sec/op │ sec/op vs base │ Max 10.010n ± 0% 7.196n ± 0% -28.11% (p=0.000 n=20) Min 8.806n ± 0% 7.155n ± 0% -18.75% (p=0.000 n=20) MinFloat 60.010n ± 0% 7.976n ± 0% -86.71% (p=0.000 n=20) MaxFloat 56.410n ± 0% 7.980n ± 0% -85.85% (p=0.000 n=20) geomean 23.37n 7.566n -67.63% Updates #59120. Change-Id: I6815d20bc304af3cbf5d6ca8fe0ca1c2ddebea2d Reviewed-on: https://go-review.googlesource.com/c/go/+/580283 Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Qiqi Huang <huangqiqi@loongson.cn> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: abner chenc <chenguoqi@loongson.cn> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/floats.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/test/codegen/floats.go b/test/codegen/floats.go
index d38df1cacb..d2cf6f2b00 100644
--- a/test/codegen/floats.go
+++ b/test/codegen/floats.go
@@ -164,6 +164,7 @@ func ArrayCopy(a [16]byte) (b [16]byte) {
func Float64Min(a, b float64) float64 {
// amd64:"MINSD"
// arm64:"FMIND"
+ // loong64:"FMIND"
// riscv64:"FMIN"
// ppc64/power9:"XSMINJDP"
// ppc64/power10:"XSMINJDP"
@@ -173,6 +174,7 @@ func Float64Min(a, b float64) float64 {
func Float64Max(a, b float64) float64 {
// amd64:"MINSD"
// arm64:"FMAXD"
+ // loong64:"FMAXD"
// riscv64:"FMAX"
// ppc64/power9:"XSMAXJDP"
// ppc64/power10:"XSMAXJDP"
@@ -182,6 +184,7 @@ func Float64Max(a, b float64) float64 {
func Float32Min(a, b float32) float32 {
// amd64:"MINSS"
// arm64:"FMINS"
+ // loong64:"FMINF"
// riscv64:"FMINS"
// ppc64/power9:"XSMINJDP"
// ppc64/power10:"XSMINJDP"
@@ -191,6 +194,7 @@ func Float32Min(a, b float32) float32 {
func Float32Max(a, b float32) float32 {
// amd64:"MINSS"
// arm64:"FMAXS"
+ // loong64:"FMAXF"
// riscv64:"FMAXS"
// ppc64/power9:"XSMAXJDP"
// ppc64/power10:"XSMAXJDP"