diff options
author | fanzha02 <fannie.zhang@arm.com> | 2018-01-17 10:25:26 +0000 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2018-02-06 00:25:23 +0000 |
commit | a0222ec518a80909060151ccbc275e67f3f03b60 (patch) | |
tree | 99405621257f505c374a1744eae0aa8589faf80d /src/cmd/asm/internal/asm/testdata/arm64error.s | |
parent | 595231763754e5fc3a8431a31f3ae893fd7d2d57 (diff) | |
download | go-a0222ec518a80909060151ccbc275e67f3f03b60.tar.gz go-a0222ec518a80909060151ccbc275e67f3f03b60.zip |
cmd/internal/obj/arm64: fix assemble add/adds/sub/subs/cmp/cmn(extended register) bug
The current code encodes the wrong option value in the binary.
The fix reconstructs the function opxrrr() that does not encode the option
value into the binary value when arguments is sign or zero-extended register.
Add the relevant test cases and negative tests.
Fixes #23501
Change-Id: Ie5850ead2ad08d9a235a5664869aac5051762f1f
Reviewed-on: https://go-review.googlesource.com/88876
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/asm/internal/asm/testdata/arm64error.s')
-rw-r--r-- | src/cmd/asm/internal/asm/testdata/arm64error.s | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cmd/asm/internal/asm/testdata/arm64error.s b/src/cmd/asm/internal/asm/testdata/arm64error.s index 97af09c4dd..e4fad9c741 100644 --- a/src/cmd/asm/internal/asm/testdata/arm64error.s +++ b/src/cmd/asm/internal/asm/testdata/arm64error.s @@ -10,4 +10,6 @@ TEXT errors(SB),$0 VST1 [V1.B16], (R8)(R13) // ERROR "illegal combination" VST1 [V1.B16], 9(R2) // ERROR "illegal combination" VLD1 8(R8)(R13), [V2.B16] // ERROR "illegal combination" + ADD R1.UXTB<<5, R2, R3 // ERROR "shift amount out of range 0 to 4" + ADDS R1.UXTX<<7, R2, R3 // ERROR "shift amount out of range 0 to 4" RET |