[PATCH] D18048: [AArch64] Enable more load clustering in the MI Scheduler.

Chad Rosier via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 17 10:57:55 PDT 2016

mcrosier added inline comments.

Comment at: lib/Target/AArch64/AArch64InstrInfo.cpp:1519
@@ -1460,3 +1518,3 @@
                                           unsigned NumLoads) const {
   // Only cluster up to a single pair.
   if (NumLoads > 1)
gberry wrote:
> mcrosier wrote:
> > gberry wrote:
> > > Shouldn't we be checking isCandidateToMergeOrPair here to avoid clustering loads that we're not going to pair?
> > This is the purpose of the canPairLdStOpc() check.  It's effectively the pairing logic from the load/store optimizer isCandidateToMergeOrPair() function, but without the merging logic.
> But canPairLdStOpc() is only considering the opcode.  It doesn't take into account the other things that may inhibit pairing later such as isLdStSuppressed being true.  You may be asking the scheduler to cluster loads that you're not going to end up pariing later.
Ah, I see what you're saying.  Let me see if I can move that function into InstrInfo, so it can be shared.


More information about the llvm-commits mailing list