Page MenuHomePhabricator

[PowerPC] Implement the areMemAccessesTriviallyDisjoint hook
ClosedPublic

Authored by steven.zhang on Jun 25 2019, 8:34 PM.

Details

Summary

This hook it is trying to tell, even without aliasing information, that two MIs access different memory addresses. This function returns true if two MIs access different memory addresses and false otherwise.

After implemented this hook, we will model the memory dependency in the scheduling dependency graph more precise, and will have more opportunity to reorder the load/stores, as they didn't have the dependency at some condition.

There is no perf impact for spec2017 with this patch.

Diff Detail

Repository
rL LLVM

Event Timeline

steven.zhang created this revision.Jun 25 2019, 8:34 PM
Herald added a project: Restricted Project. · View Herald TranscriptJun 25 2019, 8:34 PM
Herald added a subscriber: hiraditya. · View Herald Transcript
jsji accepted this revision.Jun 28 2019, 7:23 AM

LGTM except for some minor comments update, you can update them before commit.
Thanks for implementing this hook, it should improve scheduling in general.

llvm/lib/Target/PowerPC/PPCInstrInfo.h
361 ↗(On Diff #206577)

This is a little confusing to me, it is easy to read it as retrieve ... from ....
Maybe something like get the base operand, byte offset of an instruction and the memory width?

There are 2-3 similar ones in PPCInstrInfo.cpp as well.

This revision is now accepted and ready to land.Jun 28 2019, 7:23 AM
steven.zhang marked an inline comment as done.Jul 1 2019, 7:41 PM
steven.zhang added inline comments.
llvm/lib/Target/PowerPC/PPCInstrInfo.h
361 ↗(On Diff #206577)

ok, I will update it.

This revision was automatically updated to reflect the committed changes.