mirror of
https://github.com/golang/go
synced 2024-11-16 19:54:55 -07:00
cmd/compile: add jump table codegen test
Change-Id: Ic67f676f5ebe146166a0d3c1d78a802881320e49 Reviewed-on: https://go-review.googlesource.com/c/go/+/400375 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
parent
3d8cb26504
commit
c4b2288755
@ -20,3 +20,53 @@ func f(x string) int {
|
||||
return -3
|
||||
}
|
||||
}
|
||||
|
||||
// use jump tables for 8+ int cases
|
||||
func square(x int) int {
|
||||
// amd64:`JMP\s\(.*\)\(.*\)$`
|
||||
switch x {
|
||||
case 1:
|
||||
return 1
|
||||
case 2:
|
||||
return 4
|
||||
case 3:
|
||||
return 9
|
||||
case 4:
|
||||
return 16
|
||||
case 5:
|
||||
return 25
|
||||
case 6:
|
||||
return 36
|
||||
case 7:
|
||||
return 49
|
||||
case 8:
|
||||
return 64
|
||||
default:
|
||||
return x * x
|
||||
}
|
||||
}
|
||||
|
||||
// use jump tables for 8+ string lengths
|
||||
func length(x string) int {
|
||||
// amd64:`JMP\s\(.*\)\(.*\)$`
|
||||
switch x {
|
||||
case "a":
|
||||
return 1
|
||||
case "bb":
|
||||
return 2
|
||||
case "ccc":
|
||||
return 3
|
||||
case "dddd":
|
||||
return 4
|
||||
case "eeeee":
|
||||
return 5
|
||||
case "ffffff":
|
||||
return 6
|
||||
case "ggggggg":
|
||||
return 7
|
||||
case "hhhhhhhh":
|
||||
return 8
|
||||
default:
|
||||
return len(x)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user