diff options
| author | Xiaolin Zhao <zhaoxiaolin@loongson.cn> | 2024-11-01 16:09:32 +0800 |
|---|---|---|
| committer | abner chenc <chenguoqi@loongson.cn> | 2024-11-13 00:57:25 +0000 |
| commit | ab55465098a0cd33007684091b573717a6ea54cf (patch) | |
| tree | f5a5e225cb408b2d8b8d2201cd18cd6460473aad /test/codegen/mathbits.go | |
| parent | 65ba6f94b3a69a71c830044cf0c0f63d4f3601f7 (diff) | |
| download | go-ab55465098a0cd33007684091b573717a6ea54cf.tar.xz | |
cmd/compile: wire up math/bits.TrailingZeros intrinsics for loong64
Micro-benchmark results on Loongson 3A5000 and 3A6000:
goos: linux
goarch: loong64
pkg: math/bits
cpu: Loongson-3A6000 @ 2500.00MHz
| bench.old | bench.new |
| sec/op | sec/op vs base |
TrailingZeros 1.7240n ± 0% 0.8120n ± 0% -52.90% (p=0.000 n=20)
TrailingZeros8 1.0530n ± 0% 0.8015n ± 0% -23.88% (p=0.000 n=20)
TrailingZeros16 2.072n ± 0% 1.015n ± 0% -51.01% (p=0.000 n=20)
TrailingZeros32 1.7160n ± 0% 0.8122n ± 0% -52.67% (p=0.000 n=20)
TrailingZeros64 2.0060n ± 0% 0.8125n ± 0% -59.50% (p=0.000 n=20)
geomean 1.669n 0.8470n -49.25%
goos: linux
goarch: loong64
pkg: math/bits
cpu: Loongson-3A5000 @ 2500.00MHz
| bench.old | bench.new |
| sec/op | sec/op vs base |
TrailingZeros 2.6275n ± 0% 0.9120n ± 0% -65.29% (p=0.000 n=20)
TrailingZeros8 1.451n ± 0% 1.163n ± 0% -19.85% (p=0.000 n=20)
TrailingZeros16 3.069n ± 0% 1.201n ± 0% -60.87% (p=0.000 n=20)
TrailingZeros32 2.9060n ± 0% 0.9115n ± 0% -68.63% (p=0.000 n=20)
TrailingZeros64 2.6305n ± 0% 0.9115n ± 0% -65.35% (p=0.000 n=20)
geomean 2.456n 1.011n -58.83%
This patch is a copy of CL 479498.
Co-authored-by: WANG Xuerui <git@xen0n.name>
Change-Id: I1a5b2114a844dc0d02c8e68f41ce2443ac3b5fda
Reviewed-on: https://go-review.googlesource.com/c/go/+/624356
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@google.com>
Diffstat (limited to 'test/codegen/mathbits.go')
| -rw-r--r-- | test/codegen/mathbits.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/test/codegen/mathbits.go b/test/codegen/mathbits.go index f258ab9162..baed4f7c67 100644 --- a/test/codegen/mathbits.go +++ b/test/codegen/mathbits.go @@ -361,6 +361,7 @@ func TrailingZeros(n uint) int { // 386:"BSFL" // arm:"CLZ" // arm64:"RBIT","CLZ" + // loong64:"CTZV" // s390x:"FLOGR" // ppc64x/power8:"ANDN","POPCNTD" // ppc64x/power9: "CNTTZD" @@ -373,6 +374,7 @@ func TrailingZeros64(n uint64) int { // amd64/v3:"TZCNTQ" // 386:"BSFL" // arm64:"RBIT","CLZ" + // loong64:"CTZV" // s390x:"FLOGR" // ppc64x/power8:"ANDN","POPCNTD" // ppc64x/power9: "CNTTZD" @@ -392,6 +394,7 @@ func TrailingZeros32(n uint32) int { // 386:"BSFL" // arm:"CLZ" // arm64:"RBITW","CLZW" + // loong64:"CTZW" // s390x:"FLOGR","MOVWZ" // ppc64x/power8:"ANDN","POPCNTW" // ppc64x/power9: "CNTTZW" @@ -404,6 +407,7 @@ func TrailingZeros16(n uint16) int { // 386:"BSFL\t" // arm:"ORR\t\\$65536","CLZ",-"MOVHU\tR" // arm64:"ORR\t\\$65536","RBITW","CLZW",-"MOVHU\tR",-"RBIT\t",-"CLZ\t" + // loong64:"CTZV" // s390x:"FLOGR","OR\t\\$65536" // ppc64x/power8:"POPCNTD","ORIS\\t\\$1" // ppc64x/power9:"CNTTZD","ORIS\\t\\$1" @@ -416,6 +420,7 @@ func TrailingZeros8(n uint8) int { // 386:"BSFL" // arm:"ORR\t\\$256","CLZ",-"MOVBU\tR" // arm64:"ORR\t\\$256","RBITW","CLZW",-"MOVBU\tR",-"RBIT\t",-"CLZ\t" + // loong64:"CTZV" // s390x:"FLOGR","OR\t\\$256" // wasm:"I64Ctz" return bits.TrailingZeros8(n) |
