diff options
author | Keith Randall <khr@golang.org> | 2018-04-09 10:25:15 -0700 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2018-04-09 18:57:37 +0000 |
commit | 0de0ed369f902675cdfa9ed164497ae81c42bcdd (patch) | |
tree | f420672c6e7d1bb857c5ab60644093b92cfaed25 /test/align.go | |
parent | 17df5ed910cab9c68bc781b06d83b8db3fd0f75c (diff) | |
download | go-0de0ed369f902675cdfa9ed164497ae81c42bcdd.tar.gz go-0de0ed369f902675cdfa9ed164497ae81c42bcdd.zip |
test: check that unaligned load-add opcodes work.
A test for CL 102036.
Change-Id: Ief6dcb4f478670813fbe22ea75a06815a4b201a3
Reviewed-on: https://go-review.googlesource.com/105875
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'test/align.go')
-rw-r--r-- | test/align.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/align.go b/test/align.go new file mode 100644 index 0000000000..61d07c49b8 --- /dev/null +++ b/test/align.go @@ -0,0 +1,29 @@ +// run + +// 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 main + +// On 32-bit archs, one of the f fields of a [2]T +// will be unaligned (address of 4 mod 8). +// Make sure we can access the f fields successfully, +// particularly for load-add combo instructions +// introduced by CL 102036. +type T struct { + pad uint32 + f float64 +} + +//go:noinline +func f(t, u *T) float64 { + return 3.0 + t.f + u.f +} + +func main() { + t := [2]T{{0, 1.0}, {0, 2.0}} + sink = f(&t[0], &t[1]) +} + +var sink float64 |