[ARM] Don't warn on REG_SP when used in CRC32 instructions
authorJiong Wang <jiong.wang@arm.com>
Wed, 9 Aug 2017 16:52:54 +0000 (17:52 +0100)
committerJiong Wang <jiong.wang@arm.com>
Wed, 9 Aug 2017 16:52:54 +0000 (17:52 +0100)
commitcc4a945a2687184c7cd4a0572e02965829517408
tree571345ba14e0aa796cdf3ba2cd48a4515edc52f5
parentcd3af38d7b3e66117e7964b6fea45e57d47169ff
[ARM] Don't warn on REG_SP when used in CRC32 instructions

According to ARMv8-A architecture manual, REG_SP is allowed in CRC32
instructions in Thumb mode.  It is REG_PC that will cause unpredictable
behaviours on both ARM and Thumb.

This patch removes the incorrect warning on Thumb mode.

Meanwhile the disassembler is updated to use format "<bitfield>R" instead of
"<bitfield>S".  "<bitfield>S" is not used elsewhere. so I have deleted related
code from the disassembler.

gas/
* config/tc-arm.c (do_crc32_1): Remove warning on REG_SP for thumb_mode.
* testsuite/gas/arm/crc32-armv8-a-bad.d: Update exepcted result.
* testsuite/gas/arm/crc32-armv8-r-bad.d: Likewise.
* testsuite/gas/arm/crc32-armv8-a.d: Likewise.
* testsuite/gas/arm/crc32-armv8-r.d: Likewise.
* testsuite/gas/arm/crc32-armv8-ar-bad.s: Update test case.
* testsuite/gas/arm/crc32-armv8-ar.s: Likewise.
* testsuite/gas/arm/crc32-bad.l: Update expected error message.

opcode/
* arm-dis.c (thumb32_opcodes): Use format 'R' instead of 'S' for
register operands in CRC instructions.
(print_insn_thumb32): Remove "<bitfield>S" support.  Updated the
comments.
gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/gas/arm/crc32-armv8-a-bad.d
gas/testsuite/gas/arm/crc32-armv8-a.d
gas/testsuite/gas/arm/crc32-armv8-ar-bad.s
gas/testsuite/gas/arm/crc32-armv8-ar.s
gas/testsuite/gas/arm/crc32-armv8-r-bad.d
gas/testsuite/gas/arm/crc32-armv8-r.d
gas/testsuite/gas/arm/crc32-bad.l
opcodes/ChangeLog
opcodes/arm-dis.c