From: Keith Randall Date: Mon, 9 Apr 2018 17:25:15 +0000 (-0700) Subject: test: check that unaligned load-add opcodes work. X-Git-Tag: go1.11beta1~920 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0de0ed369f902675cdfa9ed164497ae81c42bcdd;p=gostls13.git 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 Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- 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