mirror of
https://github.com/golang/go
synced 2025-05-02 02:51:41 +00:00
cmd/compile: use jump table on ARM64
Following CL 357330, use jump tables on ARM64. name old time/op new time/op delta Switch8Predictable-4 3.41ns ± 0% 3.21ns ± 0% ~ (p=0.079 n=4+5) Switch8Unpredictable-4 12.0ns ± 0% 9.5ns ± 0% -21.17% (p=0.000 n=5+4) Switch32Predictable-4 3.06ns ± 0% 2.82ns ± 0% -7.78% (p=0.008 n=5+5) Switch32Unpredictable-4 13.3ns ± 0% 9.5ns ± 0% -28.87% (p=0.016 n=4+5) SwitchStringPredictable-4 3.71ns ± 0% 3.21ns ± 0% -13.43% (p=0.000 n=5+4) SwitchStringUnpredictable-4 14.8ns ± 0% 15.1ns ± 0% +2.37% (p=0.008 n=5+5) Change-Id: Ia0b85df7ca9273cf70c05eb957225c6e61822fa6 Reviewed-on: https://go-review.googlesource.com/c/go/+/403979 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
src/cmd
compile
internal
internal
test/codegen
@ -24,6 +24,7 @@ func f(x string) int {
|
||||
// use jump tables for 8+ int cases
|
||||
func square(x int) int {
|
||||
// amd64:`JMP\s\(.*\)\(.*\)$`
|
||||
// arm64:`MOVD\s\(R.*\)\(R.*<<3\)`,`JMP\s\(R.*\)$`
|
||||
switch x {
|
||||
case 1:
|
||||
return 1
|
||||
@ -49,6 +50,7 @@ func square(x int) int {
|
||||
// use jump tables for 8+ string lengths
|
||||
func length(x string) int {
|
||||
// amd64:`JMP\s\(.*\)\(.*\)$`
|
||||
// arm64:`MOVD\s\(R.*\)\(R.*<<3\)`,`JMP\s\(R.*\)$`
|
||||
switch x {
|
||||
case "a":
|
||||
return 1
|
||||
|
Reference in New Issue
Block a user