This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Disable WLSTP loops
ClosedPublic

Authored by dmgreen on Nov 17 2020, 3:05 PM.

Details

Summary

This checks to see if the loop will likely become a tail predicated loop and disables wls loop generation if so, as the likelihood for reverting is currently too high. These should be fairly rare situations anyway due to the way iterations and element counts are used during lowering. Just not trying can alter how SCEV's are materialized however, leading to different codegen.

It also adds a option to disable all while low overhead loops, for debugging.

Diff Detail

Event Timeline

dmgreen created this revision.Nov 17 2020, 3:05 PM
dmgreen requested review of this revision.Nov 17 2020, 3:05 PM
samparker accepted this revision.Nov 18 2020, 12:42 AM

Sounds good to me, I would have been in favour of just completely disabling wls for now :)

This revision is now accepted and ready to land.Nov 18 2020, 12:42 AM

Thanks. WLS can certainly be beneficial in places, so is best to leave on for non-tail predicated loop. We can try to make them less likely to revert and hopefully re-enable them for tail predicated loops in the future, once the performance/correctness is more reliable.

This revision was automatically updated to reflect the committed changes.