diff options
author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2013-06-26 13:49:53 +0000 |
---|---|---|
committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2013-06-26 13:49:53 +0000 |
commit | 8950dd127ad4cccd9dadf616b5057cf130f24ade (patch) | |
tree | 8acf2ee447b8829ec3edf9a2c4cc013acf1a2895 /test/MC/PowerPC/ppc64-errors.s | |
parent | 0b8594268feb1c804370541c7853e658caee0ae5 (diff) | |
download | external_llvm-8950dd127ad4cccd9dadf616b5057cf130f24ade.zip external_llvm-8950dd127ad4cccd9dadf616b5057cf130f24ade.tar.gz external_llvm-8950dd127ad4cccd9dadf616b5057cf130f24ade.tar.bz2 |
[PowerPC] Accept 17-bit signed immediates for addis
The assembler currently strictly verifies that immediates for
s16imm operands are in range (-32768 ... 32767). This matches
the behaviour of the GNU assembler, with one exception: gas
allows, as a special case, operands in an extended range
(-65536 .. 65535) for the addis instruction only (and its
extended mnemonic lis).
The main reason for this seems to be to allow using unsigned
16-bit operands for lis, e.g. like lis %r1, 0xfedc.
Since this has been supported by gas for a long time, and
assembler source code seen "in the wild" actually exploits
this feature, this patch adds equivalent support to LLVM
for compatibility reasons.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184946 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/PowerPC/ppc64-errors.s')
-rw-r--r-- | test/MC/PowerPC/ppc64-errors.s | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/test/MC/PowerPC/ppc64-errors.s b/test/MC/PowerPC/ppc64-errors.s index 1da5753..8b6dd53 100644 --- a/test/MC/PowerPC/ppc64-errors.s +++ b/test/MC/PowerPC/ppc64-errors.s @@ -32,6 +32,14 @@ # CHECK-NEXT: ori 1, 2, 65536 ori 1, 2, 65536 +# Signed 16-bit immediate operands (extended range for addis) + +# CHECK: error: invalid operand for instruction + addis 1, 0, -65537 + +# CHECK: error: invalid operand for instruction + addis 1, 0, 65536 + # D-Form memory operands # CHECK: error: invalid register number |