aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/bool.go43
-rw-r--r--test/codegen/writebarrier.go10
2 files changed, 35 insertions, 18 deletions
diff --git a/test/codegen/bool.go b/test/codegen/bool.go
index 990a9ed1b1..0daeb88b9b 100644
--- a/test/codegen/bool.go
+++ b/test/codegen/bool.go
@@ -217,53 +217,53 @@ func TestSetInvGeFp64(x float64, y float64) bool {
}
func TestLogicalCompareZero(x *[64]uint64) {
// ppc64x:"ANDCC",^"AND"
- b := x[0]&3
- if b!=0 {
+ b := x[0] & 3
+ if b != 0 {
x[0] = b
}
// ppc64x:"ANDCC",^"AND"
- b = x[1]&x[2]
- if b!=0 {
+ b = x[1] & x[2]
+ if b != 0 {
x[1] = b
}
// ppc64x:"ANDNCC",^"ANDN"
- b = x[1]&^x[2]
- if b!=0 {
+ b = x[1] &^ x[2]
+ if b != 0 {
x[1] = b
}
// ppc64x:"ORCC",^"OR"
- b = x[3]|x[4]
- if b!=0 {
+ b = x[3] | x[4]
+ if b != 0 {
x[3] = b
}
// ppc64x:"SUBCC",^"SUB"
- b = x[5]-x[6]
- if b!=0 {
+ b = x[5] - x[6]
+ if b != 0 {
x[5] = b
}
// ppc64x:"NORCC",^"NOR"
- b = ^(x[5]|x[6])
- if b!=0 {
+ b = ^(x[5] | x[6])
+ if b != 0 {
x[5] = b
}
// ppc64x:"XORCC",^"XOR"
- b = x[7]^x[8]
- if b!=0 {
+ b = x[7] ^ x[8]
+ if b != 0 {
x[7] = b
}
// ppc64x:"ADDCC",^"ADD"
- b = x[9]+x[10]
- if b!=0 {
+ b = x[9] + x[10]
+ if b != 0 {
x[9] = b
}
// ppc64x:"NEGCC",^"NEG"
b = -x[11]
- if b!=0 {
+ if b != 0 {
x[11] = b
}
// ppc64x:"CNTLZDCC",^"CNTLZD"
b = uint64(bits.LeadingZeros64(x[12]))
- if b!=0 {
+ if b != 0 {
x[12] = b
}
@@ -274,3 +274,10 @@ func TestLogicalCompareZero(x *[64]uint64) {
}
}
+
+func constantWrite(b bool, p *bool) {
+ if b {
+ // amd64:`MOVB\t[$]1, \(`
+ *p = b
+ }
+}
diff --git a/test/codegen/writebarrier.go b/test/codegen/writebarrier.go
index cfcfe15a40..e125973e7c 100644
--- a/test/codegen/writebarrier.go
+++ b/test/codegen/writebarrier.go
@@ -53,3 +53,13 @@ func combine4slice(p *[4][]byte, a, b, c, d []byte) {
// arm64:-`.*runtime[.]gcWriteBarrier`
p[3] = d
}
+
+func trickyWriteNil(p *int, q **int) {
+ if p == nil {
+ // We change "= p" to "= 0" in the prove pass, which
+ // means we have one less pointer that needs to go
+ // into the write barrier buffer.
+ // amd64:`.*runtime[.]gcWriteBarrier1`
+ *q = p
+ }
+}