[AArch64] Enable more load clustering in the MI Scheduler.
authorChad Rosier <mcrosier@codeaurora.org>
Fri, 18 Mar 2016 19:21:02 +0000 (19:21 +0000)
committerChad Rosier <mcrosier@codeaurora.org>
Fri, 18 Mar 2016 19:21:02 +0000 (19:21 +0000)
commitcdfd7e7201960b9c932405cb2dbde4b55bfdaaae
tree64978669d79d5d92790ada47e7b5c6ca41ec11a6
parent4c62c7c981e9c66bb21f7229b715fe833e39b955
[AArch64] Enable more load clustering in the MI Scheduler.

This patch adds unscaled loads and sign-extend loads to the TII
getMemOpBaseRegImmOfs API, which is used to control clustering in the MI
scheduler. This is done to create more opportunities for load pairing.  I've
also added the scaled LDRSWui instruction, which was missing from the scaled
instructions. Finally, I've added support in shouldClusterLoads for clustering
adjacent sext and zext loads that too can be paired by the load/store optimizer.

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

llvm-svn: 263819
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
llvm/lib/Target/AArch64/AArch64InstrInfo.h
llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
llvm/test/CodeGen/AArch64/arm64-ldp-cluster.ll [new file with mode: 0644]