// asmcheck // Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // These tests check code generation of switch statements. package codegen // see issue 33934 func f(x string) int { // amd64:-`cmpstring` switch x { case "": return -1 case "1", "2", "3": return -2 default: return -3 } } // 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 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\(.*\)\(.*\)$` // arm64:`MOVD\s\(R.*\)\(R.*<<3\)`,`JMP\s\(R.*\)$` 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) } }