Loop Opt WG Meeting Minutes for July 17, 2019

Hi all,

Apparently some people had trouble joining today. I also had trouble using the attendee ID provided by webex. I’ve canceled the meeting series and will be scheduling a new one with an updated link. Please remember to update your calendars with the new invite.

My apologies to those who couldn’t join today, and to everyone for the churn.

Today’s Meeting Minutes:

Hi Bardia,

Can you add me to the list?

Thanks,
Amara

Hi all,

Sorry I can’t attend the conference call on Wednesday, so I wrapped up my survey into a blog post that is easier to digest, here is the link:
https://medium.com/@mshockwave/llvm-loop-lr-survey-6df55f8dff74

Here is the take away:

  1. I’m not sure LoopRotation will cause any problem if the user Passes require the property of exit block predecessors (i.e. predecessors of exit blocks are always in the loop)

  2. I do a simple experiment on top of LLVM’s existing regression testsuite by running LoopRotation before every Passes that use LoopSimplify loops as inputs. About 10% of the selected test cases are failed.

  3. As the follow up of the experiment, I pick part of the failures from LoopFusion and LoopStrengthReduction to find the root cause. All of them are actually producing expecting and correct results. The failures are caused by false negatives coming from the testing infrastructure.

As a personal verdicts, I think migrating canonical loops to LoopRotation loops seem to require little of works on existing loop Passes, I’m pretty positive on this migration. But of course, we definitely need feedback from the community and real-field test results.

B.R.

  • Min

Hi Min,

Thanks for sharing your findings with us.

Regarding loop rotation breaking the “exit block predecessor requirement”, do you have specific examples of that? In the tests I’ve tried, I see a BB with the “crit_edge” suffix that acts as the exit block, while the loop guard branches to the successor of the “crit_edge” block.

Bardia Mahjour

graycol.gifMin-Yih Hsu —2019/07/19 01:47:20 PM—Hi all, Sorry I can’t attend the conference call on Wednesday, so I wrapped up my

Hi Bardia,

Thanks for pointing out. At the time I was writing the article, I didn’t have any concrete examples to prove this point. I’ve only read the implementation of LoopRotation.
But after some detailed looks in, I found that the code do try to maintain this property by splitting critical edges at the very end.
I will modify my survey.

Thanks again.

  • Min