1
0
mirror of https://github.com/golang/go synced 2024-11-12 07:30:25 -07:00

test/codegen: port math/bits.TrailingZeros tests to codegen

And remove them from ssa_test.

Change-Id: Ib5de5c0d908f23915e0847eca338cacf2fa5325b
Reviewed-on: https://go-review.googlesource.com/98795
Reviewed-by: Giovanni Bajo <rasky@develer.com>
This commit is contained in:
Alberto Donizetti 2018-03-06 09:39:14 +01:00
parent df8c2b905b
commit 85dcc709a8
2 changed files with 34 additions and 65 deletions

View File

@ -523,38 +523,6 @@ var linuxAMD64Tests = []*asmTest{
pos: []string{"\tBTQ\t\\$60"},
},
// Intrinsic tests for math/bits
{
fn: `
func f41(a uint64) int {
return bits.TrailingZeros64(a)
}
`,
pos: []string{"\tBSFQ\t", "\tMOVL\t\\$64,", "\tCMOVQEQ\t"},
},
{
fn: `
func f42(a uint32) int {
return bits.TrailingZeros32(a)
}
`,
pos: []string{"\tBSFQ\t", "\tORQ\t[^$]", "\tMOVQ\t\\$4294967296,"},
},
{
fn: `
func f43(a uint16) int {
return bits.TrailingZeros16(a)
}
`,
pos: []string{"\tBSFQ\t", "\tORQ\t\\$65536,"},
},
{
fn: `
func f44(a uint8) int {
return bits.TrailingZeros8(a)
}
`,
pos: []string{"\tBSFQ\t", "\tORQ\t\\$256,"},
},
{
fn: `
func f45(a uint64) uint64 {
@ -1230,39 +1198,6 @@ var linuxS390XTests = []*asmTest{
pos: []string{"\tFMSUBS\t"},
},
// Intrinsic tests for math/bits
{
fn: `
func f18(a uint64) int {
return bits.TrailingZeros64(a)
}
`,
pos: []string{"\tFLOGR\t"},
},
{
fn: `
func f19(a uint32) int {
return bits.TrailingZeros32(a)
}
`,
pos: []string{"\tFLOGR\t", "\tMOVWZ\t"},
},
{
fn: `
func f20(a uint16) int {
return bits.TrailingZeros16(a)
}
`,
pos: []string{"\tFLOGR\t", "\tOR\t\\$65536,"},
},
{
fn: `
func f21(a uint8) int {
return bits.TrailingZeros8(a)
}
`,
pos: []string{"\tFLOGR\t", "\tOR\t\\$256,"},
},
// Intrinsic tests for math/bits
{
fn: `
func f22(a uint64) uint64 {

View File

@ -95,3 +95,37 @@ func Len8(n uint8) int {
//mips:"CLZ"
return bits.Len8(n)
}
// ------------------------ //
// bits.TrailingZeros //
// ------------------------ //
func TrailingZeros(n uint) int {
//amd64:"BSFQ","MOVL\t\\$64","CMOVQEQ"
//s390x:"FLOGR"
return bits.TrailingZeros(n)
}
func TrailingZeros64(n uint64) int {
//amd64:"BSFQ","MOVL\t\\$64","CMOVQEQ"
//s390x:"FLOGR"
return bits.TrailingZeros64(n)
}
func TrailingZeros32(n uint32) int {
//amd64:"MOVQ\t\\$4294967296","ORQ\t[^$]","BSFQ"
//s390x:"FLOGR","MOVWZ"
return bits.TrailingZeros32(n)
}
func TrailingZeros16(n uint16) int {
//amd64:"BSFQ","ORQ\t\\$65536"
//s390x:"FLOGR","OR\t\\$65536"
return bits.TrailingZeros16(n)
}
func TrailingZeros8(n uint8) int {
//amd64:"BSFQ","ORQ\t\\$256"
//s390x:"FLOGR","OR\t\\$256"
return bits.TrailingZeros8(n)
}