OSDN Git Service

[AArch64]Select wide immediate offset into [Base+XReg] addressing mode
authorHao Liu <Hao.Liu@arm.com>
Tue, 14 Oct 2014 06:50:36 +0000 (06:50 +0000)
committerHao Liu <Hao.Liu@arm.com>
Tue, 14 Oct 2014 06:50:36 +0000 (06:50 +0000)
commit75ad488c41d4dfc29de0b296a5503dcde93d72c1
tree3025a6394b976b4bbcc08e9c7d205cb1ccef16c8
parentb15974e996b7049e47f6f8b4bce8fce584dce19d
[AArch64]Select wide immediate offset into [Base+XReg] addressing mode
e.g Currently we'll generate following instructions if the immediate is too wide:
    MOV  X0, WideImmediate
    ADD  X1, BaseReg, X0
    LDR  X2, [X1, 0]

    Using [Base+XReg] addressing mode can save one ADD as following:
    MOV  X0, WideImmediate
    LDR  X2, [BaseReg, X0]

    Differential Revision: http://reviews.llvm.org/D5477

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219665 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
test/CodeGen/AArch64/arm64-2011-10-18-LdStOptBug.ll
test/CodeGen/AArch64/arm64-addrmode.ll
test/CodeGen/AArch64/fast-isel-addressing-modes.ll