Closed
Description
What version of Go are you using (go version
)?
go 1.10
Does this issue reproduce with the latest release?
yes
What did you do?
Try to compile this code
#include "textflag.h"
TEXT ·asm(SB),NOSPLIT,$0-0
VMOV R1, V30.S[1]
VMOV R1, V30.S[0]
VLD1.P 8(R0), V2.D[1]
VLD1 (R0), V2.B[14]
What did you expect to see?
All instructions compiled.
According to "as" these instructions should be (little endian
1 0000 3E1C0C4E mov v30.s[1], w1
2 0004 3E1C044E mov v30.s[0], w1
3 0008 0284DF0D ld1 {v2.d}[0], [x0], #8
4 000c 0218404D ld1 {v2.b}[14], [x0]
What did you see instead?
t_arm64.s:4 0xe6d40 4e041c3e VMOV R1, V30.S[0]
t_arm64.s:5 0xe6d44 4e041c3e VMOV R1, V30.S[0]
and
asm: illegal combination: 00008 (/root/go/src/t/t_arm64.s:6) VLD1.P 8(R0), V2.D[1] PSOREG_8 NONE ELEM, 3 7
asm: illegal combination: 00012 (/root/go/src/t/t_arm64.s:7) VLD1 (R0), V2.B[14] ZOREG NONE ELEM, 3 7
System details
go version go1.10 linux/arm64
GOARCH="arm64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOHOSTARCH="arm64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_arm64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build937154189=/tmp/go-build -gno-record-gcc-switches"
GOROOT/bin/go version: go version go1.10 linux/arm64
GOROOT/bin/go tool compile -V: compile version go1.10
uname -sr: Linux 4.4.49-s5p6818
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
/lib/aarch64-linux-gnu/libc.so.6: GNU C Library (Ubuntu GLIBC 2.23-0ubuntu10) stable release version 2.23, by Roland McGrath et al.
gdb --version: GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1