Reapply [FastISel][AArch64] Add support for more addressing modes (r215597).
authorJuergen Ributzka <juergen@apple.com>
Tue, 19 Aug 2014 19:44:17 +0000 (19:44 +0000)
committerJuergen Ributzka <juergen@apple.com>
Tue, 19 Aug 2014 19:44:17 +0000 (19:44 +0000)
commit06bb1ca1e0a47bb016ba64288807070c8ea25b41
tree5f6b6d4be1c59631e1b37b2595fd8034b65c6a07
parent96b1e70c66aa49db4ab2bcfeaefcef9c98415ad1
Reapply [FastISel][AArch64] Add support for more addressing modes (r215597).

Note: This was originally reverted to track down a buildbot error. Reapply
without any modifications.

Original commit message:
FastISel didn't take much advantage of the different addressing modes available
to it on AArch64. This commit allows the ComputeAddress method to recognize more
addressing modes that allows shifts and sign-/zero-extensions to be folded into
the memory operation itself.

For Example:
  lsl x1, x1, #3     --> ldr x0, [x0, x1, lsl #3]
  ldr x0, [x0, x1]

  sxtw x1, w1
  lsl x1, x1, #3     --> ldr x0, [x0, x1, sxtw #3]
  ldr x0, [x0, x1]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216013 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64FastISel.cpp
test/CodeGen/AArch64/fast-isel-addressing-modes.ll [new file with mode: 0644]