Skip to content

Commit 376c4ce

Browse files
committed
cmd/vet: add test for loading complex values with a single instruction
Actual fix will be submitted to x/tools and vendored. This is just an end-to-end test for vet after that is done. Update #35264 Change-Id: I1a63f607e7cfa7aafee23c2c081086c276d3c38c Reviewed-on: https://go-review.googlesource.com/c/go/+/204538 Run-TryBot: Keith Randall <[email protected]> Reviewed-by: Alan Donovan <[email protected]>
1 parent b3bd7ab commit 376c4ce

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/cmd/vet/testdata/asm/asm.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@
77
package testdata
88

99
func arg1(x int8, y uint8)
10+
11+
func cpx(x complex64, y complex128)

src/cmd/vet/testdata/asm/asm1.s

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,18 @@
66

77
TEXT ·arg1(SB),0,$0-2
88
MOVW x+0(FP), AX // ERROR "\[amd64\] arg1: invalid MOVW of x\+0\(FP\); int8 is 1-byte value"
9+
10+
TEXT ·cpx(SB),0,$0-24
11+
// These are ok
12+
MOVSS x_real+0(FP), X0
13+
MOVSS x_imag+4(FP), X0
14+
MOVSD y_real+8(FP), X0
15+
MOVSD y_imag+16(FP), X0
16+
// Loading both parts of a complex is ok: see issue 35264.
17+
MOVSD x+0(FP), X0
18+
MOVO y+8(FP), X0
19+
MOVOU y+8(FP), X0
20+
21+
// These are not ok.
22+
MOVO x+0(FP), X0 // ERROR "\[amd64\] cpx: invalid MOVO of x\+0\(FP\); complex64 is 8-byte value containing x_real\+0\(FP\) and x_imag\+4\(FP\)"
23+
MOVSD y+8(FP), X0 // ERROR "\[amd64\] cpx: invalid MOVSD of y\+8\(FP\); complex128 is 16-byte value containing y_real\+8\(FP\) and y_imag\+16\(FP\)"

0 commit comments

Comments
 (0)