]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: add jump table codegen test
authorKeith Randall <khr@golang.org>
Thu, 14 Apr 2022 20:14:18 +0000 (13:14 -0700)
committerKeith Randall <khr@google.com>
Thu, 14 Apr 2022 21:16:29 +0000 (21:16 +0000)
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>
test/codegen/switch.go

index 2ac817d14c8494dd4be7794dbb6653fec156cc68..a6566834a867978f801657e8b9782732f25d095c 100644 (file)
@@ -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)
+       }
+}