aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
authorXiaolin Zhao <zhaoxiaolin@loongson.cn>2024-11-05 15:30:45 +0800
committerabner chenc <chenguoqi@loongson.cn>2024-11-08 01:05:48 +0000
commite6cc9d228a913b871fb20a3fa23021bd5231dbc0 (patch)
treeae79e9601b394e6a8a7cb9aa975918158ff3e220 /test/codegen
parent2751443e92d9ac6adee2ce0433253fd7b2c04b0f (diff)
downloadgo-e6cc9d228a913b871fb20a3fa23021bd5231dbc0.tar.xz
cmd/compile: implement FMA codegen for loong64
Benchmark results on Loongson 3A5000 and 3A6000: goos: linux goarch: loong64 pkg: math cpu: Loongson-3A6000 @ 2500.00MHz | bench.old | bench.new | | sec/op | sec/op vs base | FMA 25.930n ± 0% 2.002n ± 0% -92.28% (p=0.000 n=10) goos: linux goarch: loong64 pkg: math cpu: Loongson-3A5000 @ 2500.00MHz | bench.old | bench.new | | sec/op | sec/op vs base | FMA 32.840n ± 0% 2.002n ± 0% -93.90% (p=0.000 n=10) Updates #59120 This patch is a copy of CL 483355. Co-authored-by: WANG Xuerui <git@xen0n.name> Change-Id: I88b89d23f00864f9173a182a47ee135afec7ed6e Reviewed-on: https://go-review.googlesource.com/c/go/+/625335 Reviewed-by: abner chenc <chenguoqi@loongson.cn> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Carlos Amedee <carlos@golang.org>
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/floats.go6
-rw-r--r--test/codegen/math.go1
2 files changed, 7 insertions, 0 deletions
diff --git a/test/codegen/floats.go b/test/codegen/floats.go
index a77843d0e7..1b85eba352 100644
--- a/test/codegen/floats.go
+++ b/test/codegen/floats.go
@@ -72,6 +72,7 @@ func FusedAdd32(x, y, z float32) float32 {
// s390x:"FMADDS\t"
// ppc64x:"FMADDS\t"
// arm64:"FMADDS"
+ // loong64:"FMADDF\t"
// riscv64:"FMADDS\t"
return x*y + z
}
@@ -80,11 +81,13 @@ func FusedSub32_a(x, y, z float32) float32 {
// s390x:"FMSUBS\t"
// ppc64x:"FMSUBS\t"
// riscv64:"FMSUBS\t"
+ // loong64:"FMSUBF\t"
return x*y - z
}
func FusedSub32_b(x, y, z float32) float32 {
// arm64:"FMSUBS"
+ // loong64:"FNMSUBF\t"
// riscv64:"FNMSUBS\t"
return z - x*y
}
@@ -93,6 +96,7 @@ func FusedAdd64(x, y, z float64) float64 {
// s390x:"FMADD\t"
// ppc64x:"FMADD\t"
// arm64:"FMADDD"
+ // loong64:"FMADDD\t"
// riscv64:"FMADDD\t"
return x*y + z
}
@@ -101,11 +105,13 @@ func FusedSub64_a(x, y, z float64) float64 {
// s390x:"FMSUB\t"
// ppc64x:"FMSUB\t"
// riscv64:"FMSUBD\t"
+ // loong64:"FMSUBD\t"
return x*y - z
}
func FusedSub64_b(x, y, z float64) float64 {
// arm64:"FMSUBD"
+ // loong64:"FNMSUBD\t"
// riscv64:"FNMSUBD\t"
return z - x*y
}
diff --git a/test/codegen/math.go b/test/codegen/math.go
index 806f909648..4ce5fa419d 100644
--- a/test/codegen/math.go
+++ b/test/codegen/math.go
@@ -132,6 +132,7 @@ func fma(x, y, z float64) float64 {
// amd64:"VFMADD231SD"
// arm/6:"FMULAD"
// arm64:"FMADDD"
+ // loong64:"FMADDD"
// s390x:"FMADD"
// ppc64x:"FMADD"
// riscv64:"FMADDD"