]> granicus.if.org Git - llvm/commit
[AArch64] Make instruction fusion more aggressive.
authorFlorian Hahn <florian.hahn@arm.com>
Tue, 23 May 2017 09:33:34 +0000 (09:33 +0000)
committerFlorian Hahn <florian.hahn@arm.com>
Tue, 23 May 2017 09:33:34 +0000 (09:33 +0000)
commit4cdd2e6d64b9cf5ee32128f039bd731d2a8f4d9b
tree1026c02df43b65b3e7ed2b05e54216aa21d95c60
parent2bcb4e0921e12464621429d0b8b642e0e4585d06
[AArch64] Make instruction fusion more aggressive.

Summary:
This patch makes instruction fusion more aggressive by
* adding artificial edges between the successors of FirstSU and
  SecondSU, similar to BaseMemOpClusterMutation::clusterNeighboringMemOps.
* updating PostGenericScheduler::tryCandidate to keep clusters together,
   similar to GenericScheduler::tryCandidate.

This change increases the number of AES instruction pairs generated on
 Cortex-A57 and Cortex-A72. This doesn't change code at all in
 most benchmarks or general code, but we've seen improvement on kernels
 using AESE/AESMC and AESD/AESIMC.

Reviewers: evandro, kristof.beyls, t.p.northover, silviu.baranga, atrick, rengolin, MatzeB

Reviewed By: evandro

Subscribers: aemerson, rengolin, MatzeB, javed.absar, llvm-commits

Differential Revision: https://reviews.llvm.org/D33230

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303618 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/MachineScheduler.cpp
lib/Target/AArch64/AArch64MacroFusion.cpp
lib/Target/AArch64/AArch64TargetMachine.cpp
test/CodeGen/AArch64/misched-fusion-aes.ll