mirror of
https://github.com/golang/go
synced 2024-11-12 07:10:22 -07:00
test/codegen: port arm64 BIC/EON/ORN and masking tests
And delete them from asm_test. Change-Id: I24f421b87e8cb4770c887a6dfd58eacd0088947d Reviewed-on: https://go-review.googlesource.com/106056 Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
d5ff631e6b
commit
188e2bf897
@ -283,49 +283,6 @@ var linuxARMTests = []*asmTest{
|
||||
}
|
||||
|
||||
var linuxARM64Tests = []*asmTest{
|
||||
{
|
||||
fn: `
|
||||
func $(x, y uint32) uint32 {
|
||||
return x &^ y
|
||||
}
|
||||
`,
|
||||
pos: []string{"\tBIC\t"},
|
||||
neg: []string{"\tAND\t"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func $(x, y uint32) uint32 {
|
||||
return x ^ ^y
|
||||
}
|
||||
`,
|
||||
pos: []string{"\tEON\t"},
|
||||
neg: []string{"\tXOR\t"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func $(x, y uint32) uint32 {
|
||||
return x | ^y
|
||||
}
|
||||
`,
|
||||
pos: []string{"\tORN\t"},
|
||||
neg: []string{"\tORR\t"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func f34(a uint64) uint64 {
|
||||
return a & ((1<<63)-1)
|
||||
}
|
||||
`,
|
||||
pos: []string{"\tAND\t"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func f35(a uint64) uint64 {
|
||||
return a & (1<<63)
|
||||
}
|
||||
`,
|
||||
pos: []string{"\tAND\t"},
|
||||
},
|
||||
// Load-combining tests.
|
||||
{
|
||||
fn: `
|
||||
|
@ -261,3 +261,32 @@ func bitcompl32(a, b uint32) (n uint32) {
|
||||
|
||||
return n
|
||||
}
|
||||
|
||||
// Check AND masking on arm64 (Issue #19857)
|
||||
|
||||
func and_mask_1(a uint64) uint64 {
|
||||
// arm64:`AND\t`
|
||||
return a & ((1 << 63) - 1)
|
||||
}
|
||||
|
||||
func and_mask_2(a uint64) uint64 {
|
||||
// arm64:`AND\t`
|
||||
return a & (1 << 63)
|
||||
}
|
||||
|
||||
// Check generation of arm64 BIC/EON/ORN instructions
|
||||
|
||||
func op_bic(x, y uint32) uint32 {
|
||||
// arm64:`BIC\t`,-`AND`
|
||||
return x &^ y
|
||||
}
|
||||
|
||||
func op_eon(x, y uint32) uint32 {
|
||||
// arm64:`EON\t`,-`XOR`
|
||||
return x ^ ^y
|
||||
}
|
||||
|
||||
func op_orn(x, y uint32) uint32 {
|
||||
// arm64:`ORN\t`,-`ORR`
|
||||
return x | ^y
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user