Jim Grosbach
4af58f145d
ARM64: [su]xtw use W regs as inputs, not X regs.
...
Update the SXT[BHW]/UXTW instruction aliases and the shifted reg addressing
mode handling.
PR19455 and rdar://16650642
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206495 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-17 20:47:31 +00:00
NAKAMURA Takumi
f2eed86ea5
Fix abuse of StringRef on ARM64SysReg::MRSMapper::toString(Val, Valid).
...
FIXME: Could we use SmallString here?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205950 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-10 03:05:59 +00:00
Bradley Smith
35fb92dadd
[ARM64] Change SYS without a register to an alias to make disassembling more consistant.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205898 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:58 +00:00
Bradley Smith
62293d1147
[ARM64] Correctly disassemble ISB operand as ISB not DBarrier.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205897 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:54 +00:00
Bradley Smith
19b573d9c9
[ARM64] Conditional branches must always print their condition code, even AL.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205894 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:39 +00:00
Bradley Smith
6a82fbc29f
[ARM64] When printing a pre-indexed address with #0 , the ', #0 ' is not optional.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205892 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:31 +00:00
Bradley Smith
ae30bea9d7
[ARM64] Add missing shifted register MVN alias to ORN
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205891 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:26 +00:00
Bradley Smith
7face75878
[ARM64] SXTW/UXTW are only valid aliases for 32-bit operations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205890 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:22 +00:00
Bradley Smith
7b5940c0c0
[ARM64] Fix canonicalisation of MOVs. MOV is too complex to be modelled by a dumb alias.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205889 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:18 +00:00
Bradley Smith
86c067813c
[ARM64] Tighten up the special casing in emitting arithmetic extends. UXTW should only be translated when the instruction uses WSP, not SP. Vice versa for UXTX and 64-bit instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205886 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:44:03 +00:00
Bradley Smith
a8f8d292ca
[ARM64] Add missing tlbi operands and error for extra/missing register on tlbi aliases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205876 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:43:11 +00:00
Bradley Smith
84998a1fa9
[ARM64] Remove PrefetchOp and use ARM64PRFM instead.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205872 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:42:53 +00:00
Bradley Smith
96e05ca4bf
[ARM64] Move CPSRField and DBarrier operands over to AArch64-style disassembly and assembly. This removes the last users of namespace ARM64SYS.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205869 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:42:42 +00:00
Bradley Smith
fb7edfa9a5
[ARM64] Switch the decoder, disassembler, instprinter and asmparser over to using AArch64-style system registers, and fix up test failures discovered in the process.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205868 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:42:36 +00:00
Bradley Smith
01229fa891
[ARM64] Move ARM64BaseInfo.{cpp,h} into a Utils/ subdirectory, a la AArch64. These files are required in the decoder, disassembler and parser, and a layering violation was imminent.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205867 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-09 14:42:27 +00:00
Tim Northover
e2c0b61c4f
ARM64: format register strings without creating a local Twine.
...
It was causing horrible failures on some build-bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205105 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-29 15:35:57 +00:00
Tim Northover
88ac45ffa7
ARM64: change format specifier to work on 32-bit targets
...
Existing tests were failing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205092 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-29 11:47:07 +00:00
Chandler Carruth
3734a337e9
[ARM64] Fix 'assert("...")' to be 'assert(0 && "...")'. Otherwise, it is
...
no assert at all. ;] Some of these should probably be switched to
llvm_unreachable, but I didn't want to perturb the behavior in this
patch.
Found by -Wstring-conversion, which I'll try to turn on in CMake builds
at least as it is finding useful things.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205091 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-29 11:07:40 +00:00
Tim Northover
7b837d8c75
ARM64: initial backend import
...
This adds a second implementation of the AArch64 architecture to LLVM,
accessible in parallel via the "arm64" triple. The plan over the
coming weeks & months is to merge the two into a single backend,
during which time thorough code review should naturally occur.
Everything will be easier with the target in-tree though, hence this
commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205090 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-29 10:18:08 +00:00