// asmcheck // Copyright 2018 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. package codegen // This file contains code generation tests related to the handling of // string types. func CountRunes(s string) int { // Issue #24923 // amd64:`.*countrunes` return len([]rune(s)) } func ToByteSlice() []byte { // Issue #24698 // amd64:`LEAQ\ttype\.\[3\]uint8` // amd64:`CALL\truntime\.newobject` // amd64:-`.*runtime.stringtoslicebyte` return []byte("foo") } // Loading from read-only symbols should get transformed into constants. func ConstantLoad() { // 12592 = 0x3130 // 50 = 0x32 // amd64:`MOVW\t\$12592, \(`,`MOVB\t\$50, 2\(` // 386:`MOVW\t\$12592, \(`,`MOVB\t\$50, 2\(` // arm:`MOVW\t\$48`,`MOVW\t\$49`,`MOVW\t\$50` // arm64:`MOVD\t\$12592`,`MOVD\t\$50` bsink = []byte("012") // 858927408 = 0x33323130 // 13620 = 0x3534 // amd64:`MOVL\t\$858927408`,`MOVW\t\$13620, 4\(` // 386:`MOVL\t\$858927408`,`MOVW\t\$13620, 4\(` // arm64:`MOVD\t\$858927408`,`MOVD\t\$13620` bsink = []byte("012345") // 3978425819141910832 = 0x3736353433323130 // 7306073769690871863 = 0x6564636261393837 // amd64:`MOVQ\t\$3978425819141910832`,`MOVQ\t\$7306073769690871863` // 386:`MOVL\t\$858927408, \(`,`DUFFCOPY` // arm64:`MOVD\t\$3978425819141910832`,`MOVD\t\$1650538808`,`MOVD\t\$25699`,`MOVD\t\$101` bsink = []byte("0123456789abcde") } var bsink []byte