]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet: add test for loading complex values with a single instruction
authorKeith Randall <keithr@alum.mit.edu>
Thu, 31 Oct 2019 16:52:21 +0000 (09:52 -0700)
committerKeith Randall <khr@golang.org>
Tue, 5 Nov 2019 01:01:31 +0000 (01:01 +0000)
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 <khr@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
src/cmd/vet/testdata/asm/asm.go
src/cmd/vet/testdata/asm/asm1.s

index 72ff452aae84453d6b37518b8334947d1e2eaaf9..1e60d8bf9417b401c27af0724daff793a3f306b7 100644 (file)
@@ -7,3 +7,5 @@
 package testdata
 
 func arg1(x int8, y uint8)
+
+func cpx(x complex64, y complex128)
index c3ba986fb8b1217f08536d758a33d63ccb045f04..a5bb6dd0af8bbb2dc50f99315c7ac6e4996336f9 100644 (file)
@@ -6,3 +6,18 @@
 
 TEXT ·arg1(SB),0,$0-2
        MOVW    x+0(FP), AX // ERROR "\[amd64\] arg1: invalid MOVW of x\+0\(FP\); int8 is 1-byte value"
+
+TEXT ·cpx(SB),0,$0-24
+       // These are ok
+       MOVSS   x_real+0(FP), X0
+       MOVSS   x_imag+4(FP), X0
+       MOVSD   y_real+8(FP), X0
+       MOVSD   y_imag+16(FP), X0
+       // Loading both parts of a complex is ok: see issue 35264.
+       MOVSD   x+0(FP), X0
+       MOVO    y+8(FP), X0
+       MOVOU   y+8(FP), X0
+
+       // These are not ok.
+       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\)"
+       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\)"