diff options
| author | Xiaolin Zhao <zhaoxiaolin@loongson.cn> | 2024-04-10 11:48:11 +0800 |
|---|---|---|
| committer | abner chenc <chenguoqi@loongson.cn> | 2024-08-07 01:16:28 +0000 |
| commit | ff14e08cd3c4423ae6c243ef20a3b9b4c04335ed (patch) | |
| tree | c707cbdbf2f3c2b5331e68e7922a6f2a8617d94e /test/codegen | |
| parent | 36e5c84ffa8b64727b01f056b550c235636c123a (diff) | |
| download | go-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.go | 4 |
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" |
