]> Cypherpunks repositories - gostls13.git/commit
cmd/internal/obj/arm64: fix two issues in the assembler
authorBen Shi <powerman1st@163.com>
Sat, 26 May 2018 12:43:16 +0000 (12:43 +0000)
committerCherry Zhang <cherryyz@google.com>
Fri, 1 Jun 2018 15:24:42 +0000 (15:24 +0000)
commit3d6e4ec0a8c2ef47211519b21b020131c0434003
treea13cce26b705ad0c7a74c0e6428fd029a1723aef
parent063f97a6110079c2aaeb5f2c2a51d7f1bc7445ab
cmd/internal/obj/arm64: fix two issues in the assembler

There are two issues in the arm64 assembler.

1. "CMPW $0x22220000, RSP" is encoded to 5b44a4d2ff031b6b, which
   is the combination of "MOVD $0x22220000, Rtmp" and
   "NEGSW Rtmp, ZR".
   The right encoding should be a combination of
   "MOVD $0x22220000, Rtmp" and "CMPW Rtmp, RSP".

2. "AND $0x22220000, R2, RSP" is encoded to 5b44a4d25f601b00,
   which is the combination of "MOVD $0x22220000, Rtmp" and
   an illegal instruction.
   The right behavior should be an error report of
   "illegal combination", since "AND Rtmp, RSP, RSP" is invalid
   in armv8.

This CL fixes the above 2 issues and adds more test cases.

fixes #25557

Change-Id: Ia510be26b58a229f5dfe8a5fa0b35569b2d566e7
Reviewed-on: https://go-review.googlesource.com/114796
Run-TryBot: Ben Shi <powerman1st@163.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/asm/internal/asm/testdata/arm64.s
src/cmd/asm/internal/asm/testdata/arm64error.s
src/cmd/internal/obj/arm64/asm7.go