Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/internal/obj/arm64: golang assembler handles arm64 instruction add/adds/sub/subs/cmp/cmn with extesd incorrectly. #23501

Closed
zhangfannie opened this issue Jan 22, 2018 · 1 comment

Comments

@zhangfannie
Copy link
Contributor

Please answer these questions before submitting your issue. Thanks!

What version of Go are you using (go version)?

go version devel +6104939 Sun Jan 21 04:56:36 2018 +0000 linux/arm64

Does this issue reproduce with the latest release?

yes

What operating system and processor architecture are you using (go env)?

GOARCH="arm64"
GOBIN=""
GOCACHE="/home/fanzha02/.cache/go-build"
GOEXE=""
GOHOSTARCH="arm64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/fanzha02/go"
GORACE=""
GOROOT="/mnt/share/homes/fanzha02/optimize/micro_benchmark/golang"
GOTMPDIR=""
GOTOOLDIR="/mnt/share/homes/fanzha02/optimize/micro_benchmark/golang/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-build525481900=/tmp/go-build -gno-record-gcc-switches"

What did you do?

compile add with extended register offset instructions
add test cases " CMPW R2.UXTH<<3, R11 // 7f2d226b" in the asm/internal/asm/testdata/arm64.s, then run "go test -run "ARM63EndToEnd" command.

If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.

What did you expect to see?

go test successfully

What did you see instead?

the assembler gave the error information, please refer to the below.
endtoend_test.go:156: mismatched output:
have 00002 (testdata/arm64.s:21) CMPW R3.UXTH<<3, R11
want 00002 (testdata/arm64.s:21) CMPW R2.UXTH<<3, R11
endtoend_test.go:228: 00000 (testdata/arm64.s:21) CMPW R3.UXTH<<3, R11: have encoding 7f6d226b, want 7f2d226b

@gopherbot
Copy link

Change https://golang.org/cl/88876 mentions this issue: cmd/internal/obj/arm64: fix assemble add/adds/sub/subs/cmp/cmn(extended register) bug

@golang golang locked and limited conversation to collaborators Feb 6, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants