diff options
| author | Keith Randall <khr@golang.org> | 2022-04-14 13:14:18 -0700 |
|---|---|---|
| committer | Keith Randall <khr@google.com> | 2022-04-14 21:16:29 +0000 |
| commit | c4b2288755d07b9505ef498819bb540b7b0fa215 (patch) | |
| tree | 11568a92e99de190fc85f9a53d5bef0cf329de6e /test/codegen/switch.go | |
| parent | 3d8cb26504f9e3f5b45b4ea97b55714a25e016c1 (diff) | |
| download | go-c4b2288755d07b9505ef498819bb540b7b0fa215.tar.xz | |
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>
Diffstat (limited to 'test/codegen/switch.go')
| -rw-r--r-- | test/codegen/switch.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/test/codegen/switch.go b/test/codegen/switch.go index 2ac817d14c..a6566834a8 100644 --- a/test/codegen/switch.go +++ b/test/codegen/switch.go @@ -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) + } +} |
