mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
test/codegen: port direct comparisons with memory tests
And remove them from asm_test. Change-Id: I1ca29b40546d6de06f20bfd550ed8ff87f495454 Reviewed-on: https://go-review.googlesource.com/102115 Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
6633bb2aa7
commit
fc6280d4b0
2 changed files with 39 additions and 49 deletions
|
@ -394,55 +394,6 @@ var linuxAMD64Tests = []*asmTest{
|
|||
`,
|
||||
pos: []string{"TEXT\t.*, [$]0-8"},
|
||||
},
|
||||
// int <-> fp moves
|
||||
{
|
||||
fn: `
|
||||
func $(x uint32) bool {
|
||||
return x > 4
|
||||
}
|
||||
`,
|
||||
pos: []string{"\tSETHI\t.*\\(SP\\)"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func $(p int, q *int) bool {
|
||||
return p < *q
|
||||
}
|
||||
`,
|
||||
pos: []string{"CMPQ\t\\(.*\\), [A-Z]"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func $(p *int, q int) bool {
|
||||
return *p < q
|
||||
}
|
||||
`,
|
||||
pos: []string{"CMPQ\t\\(.*\\), [A-Z]"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func $(p *int) bool {
|
||||
return *p < 7
|
||||
}
|
||||
`,
|
||||
pos: []string{"CMPQ\t\\(.*\\), [$]7"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func $(p *int) bool {
|
||||
return 7 < *p
|
||||
}
|
||||
`,
|
||||
pos: []string{"CMPQ\t\\(.*\\), [$]7"},
|
||||
},
|
||||
{
|
||||
fn: `
|
||||
func $(p **int) {
|
||||
*p = nil
|
||||
}
|
||||
`,
|
||||
pos: []string{"CMPL\truntime.writeBarrier\\(SB\\), [$]0"},
|
||||
},
|
||||
}
|
||||
|
||||
var linux386Tests = []*asmTest{
|
||||
|
|
|
@ -67,3 +67,42 @@ func CompareArray6(a, b unsafe.Pointer) bool {
|
|||
// amd64:`CMPL\t\(.*\), [A-Z]`
|
||||
return *((*[4]byte)(a)) != *((*[4]byte)(b))
|
||||
}
|
||||
|
||||
// -------------- //
|
||||
// Ordering //
|
||||
// -------------- //
|
||||
|
||||
// Test that LEAQ/ADDQconst are folded into SETx ops
|
||||
|
||||
func CmpFold(x uint32) bool {
|
||||
// amd64:`SETHI\t.*\(SP\)`
|
||||
return x > 4
|
||||
}
|
||||
|
||||
// Test that direct comparisons with memory are generated when
|
||||
// possible
|
||||
|
||||
func CmpMem1(p int, q *int) bool {
|
||||
// amd64:`CMPQ\t\(.*\), [A-Z]`
|
||||
return p < *q
|
||||
}
|
||||
|
||||
func CmpMem2(p *int, q int) bool {
|
||||
// amd64:`CMPQ\t\(.*\), [A-Z]`
|
||||
return *p < q
|
||||
}
|
||||
|
||||
func CmpMem3(p *int) bool {
|
||||
// amd64:`CMPQ\t\(.*\), [$]7`
|
||||
return *p < 7
|
||||
}
|
||||
|
||||
func CmpMem4(p *int) bool {
|
||||
// amd64:`CMPQ\t\(.*\), [$]7`
|
||||
return 7 < *p
|
||||
}
|
||||
|
||||
func CmpMem5(p **int) {
|
||||
// amd64:`CMPL\truntime.writeBarrier\(SB\), [$]0`
|
||||
*p = nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue