This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Remove MVEDomain from VLDR/STR of P0
ClosedPublic

Authored by samparker on Sep 18 2020, 5:43 AM.

Details

Summary

Remove the domain from the instructions and create a shouldInspect helper for LowOverheadLoops which queries it or a vpr operand.

Diff Detail

Event Timeline

samparker created this revision.Sep 18 2020, 5:43 AM
samparker requested review of this revision.Sep 18 2020, 5:43 AM

Thanks for doing this.

llvm/lib/Target/ARM/ARMInstrVFP.td
2863

What would be the ramification of leaving this? I see VMRS_P0 is no longer validForTailPredication.

Would there be anything that stopped the code from spilling in the loop and reloading outside of it? Would the stored predicate always end up being the same?

llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp
79

Would this match VSTR_P0? (Or, would they otherwise be handled somewhere?)

samparker updated this revision to Diff 293121.Sep 21 2020, 3:50 AM
  • All the VFP instructions now have had validForTailPredication the DomainMVE removed.
  • LowOverheadLoops will inspect any instructions that are in the DomainMVE, or if they use/def the VPR. Helpers for each are added.
  • LowOverheadLoops continues to reject any use of the VPR that isn't a predicate operand.
  • Rebased after adding some more tests for P0 usage.
dmgreen accepted this revision.Sep 21 2020, 7:35 AM

Thanks. LGTM from what I understand.

This revision is now accepted and ready to land.Sep 21 2020, 7:35 AM
This revision was automatically updated to reflect the committed changes.