`,
pos: []string{"\tROLW\t\\$8,"},
},
- {
- fn: `
- func f48(a uint64) int {
- return bits.Len64(a)
- }
- `,
- pos: []string{"\tBSRQ\t"},
- },
- {
- fn: `
- func f49(a uint32) int {
- return bits.Len32(a)
- }
- `,
- pos: []string{"\tBSRQ\t"},
- },
- {
- fn: `
- func f50(a uint16) int {
- return bits.Len16(a)
- }
- `,
- pos: []string{"\tBSRQ\t"},
- },
- /* see ssa.go
- {
- fn:`
- func f51(a uint8) int {
- return bits.Len8(a)
- }
- `,
- pos:[]string{"\tBSRQ\t"},
- },
- */
- {
- fn: `
- func f52(a uint) int {
- return bits.Len(a)
- }
- `,
- pos: []string{"\tBSRQ\t"},
- },
{
fn: `
func f53(a uint64) int {
`,
pos: []string{"\tMOVWBR\t"},
},
- {
- fn: `
- func f24(a uint64) int {
- return bits.Len64(a)
- }
- `,
- pos: []string{"\tFLOGR\t"},
- },
- {
- fn: `
- func f25(a uint32) int {
- return bits.Len32(a)
- }
- `,
- pos: []string{"\tFLOGR\t"},
- },
- {
- fn: `
- func f26(a uint16) int {
- return bits.Len16(a)
- }
- `,
- pos: []string{"\tFLOGR\t"},
- },
- {
- fn: `
- func f27(a uint8) int {
- return bits.Len8(a)
- }
- `,
- pos: []string{"\tFLOGR\t"},
- },
- {
- fn: `
- func f28(a uint) int {
- return bits.Len(a)
- }
- `,
- pos: []string{"\tFLOGR\t"},
- },
{
fn: `
func f29(a uint64) int {
`,
pos: []string{"\tMOVW\tR[0-9]+@>25,"},
},
- {
- fn: `
- func f3(a uint64) int {
- return bits.Len64(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f4(a uint32) int {
- return bits.Len32(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f5(a uint16) int {
- return bits.Len16(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f6(a uint8) int {
- return bits.Len8(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f7(a uint) int {
- return bits.Len(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
{
fn: `
func f8(a uint64) int {
`,
pos: []string{"\tREVW\t"},
},
- {
- fn: `
- func f24(a uint64) int {
- return bits.Len64(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f25(a uint32) int {
- return bits.Len32(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f26(a uint16) int {
- return bits.Len16(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f27(a uint8) int {
- return bits.Len8(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f28(a uint) int {
- return bits.Len(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
{
fn: `
func f29(a uint64) int {
var linuxMIPSTests = []*asmTest{
// Intrinsic tests for math/bits
- {
- fn: `
- func f0(a uint64) int {
- return bits.Len64(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f1(a uint32) int {
- return bits.Len32(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f2(a uint16) int {
- return bits.Len16(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f3(a uint8) int {
- return bits.Len8(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
- {
- fn: `
- func f4(a uint) int {
- return bits.Len(a)
- }
- `,
- pos: []string{"\tCLZ\t"},
- },
{
fn: `
func f5(a uint64) int {
--- /dev/null
+// 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
+
+import "math/bits"
+
+// --------------- //
+// bits.Len* //
+// --------------- //
+
+func Len(n uint) int {
+ //amd64:"BSRQ"
+ //s390x:"FLOGR"
+ //arm:"CLZ" arm64:"CLZ"
+ //mips:"CLZ"
+ return bits.Len(n)
+}
+
+func Len64(n uint64) int {
+ //amd64:"BSRQ"
+ //s390x:"FLOGR"
+ //arm:"CLZ" arm64:"CLZ"
+ //mips:"CLZ"
+ return bits.Len64(n)
+}
+
+func Len32(n uint32) int {
+ //amd64:"BSRQ"
+ //s390x:"FLOGR"
+ //arm:"CLZ" arm64:"CLZ"
+ //mips:"CLZ"
+ return bits.Len32(n)
+}
+
+func Len16(n uint16) int {
+ //amd64:"BSRQ"
+ //s390x:"FLOGR"
+ //arm:"CLZ" arm64:"CLZ"
+ //mips:"CLZ"
+ return bits.Len16(n)
+}
+
+func Len8(n uint8) int {
+ //amd64 Len8 not intrisified
+ //s390x:"FLOGR"
+ //arm:"CLZ" arm64:"CLZ"
+ //mips:"CLZ"
+ return bits.Len8(n)
+}