[llvm-dev] Loop Opt WG Meeting Minutes for June 19th, 2019

Bardia Mahjour via llvm-dev llvm-dev at lists.llvm.org
Wed Jun 19 10:38:02 PDT 2019

Wed, Jun 19th, 2019:
- Status Updates
	- Loop Cost Analysis (https://reviews.llvm.org/D63459)
		- Code is under review. thanks for quick and useful feedback.
	- DDG
		- Prototype work and internal reviews are mostly completed.
		- First patch will be `DirectedGraph` as a base class for
dependence graphs.
		- Will have a presentation on the design of DDG for the next

- Canonical Loop Structure and Loop Guards
	- Should all loops have a guard (meaning add dummy guards for
unguarded loops)?
		- Not right now. Start by adding some method to find existing
guards and define the API that we want to use for straight forward cases.
We can then expand on it later on either by  improving the guard detection
itself, or by changing canonicalization passes to make it easier for the
existing API to find guards.
		- Start with simple loop guard and iterate to get it improved.

	- Questions to be answered (perhaps through code reviews) are:
		- Is any branch around the loop a guard?
			- Should it be a guard only if the branch condition
matches the condition in the latch?
		- Can there be more than one loop guard?
		- Would the guard itself be part of the loop?

	- Many passes work on rotated loops, not just simplified loop. For
new passes should we only support rotated form?
		- Definition of canonical is not well defined and needs to be
			- Ideally there should only be *one* canonical form.
			- Some passes including SCEV maybe affected by early
exists (eg. after jumpthreading scev wasn't able to detect back edges).
		- Let's survey existing analysis and transformations to see
what their requirements are. Thanks Min-Yih Hsu for volunteering to look
into it.
		- Once we are clear on what the canonical form should be, we
can discuss whether passes should preserve that form.

- New vs Old Pass Manager
	- Having to maintain two separate interfaces is costly. Can we agree
on supporting only the NPM for the new passes we are developing?
	- Documentation is an issue for the new PM
	- NPM cannot be used yet if we want the pass to be enabled by default
(because the OPM is the default PM).
		- the build bots only test the default pipeline.

- Volunteers for looking into existing bugs and/or investigating why some
loop passes are currently disabled.
	- Vivek kindly volunteered to prepare a list of reproducible loop
optimization bugs in Bugzilla.

- Loop Pass vs Function Pass:
	- Some llvm passes implement loop interface for the NPM and function
interface for OPM (or vice-versa)
	- Add this item to agenda for a future meeting.

Decisions and To Do's:
- Presentation on DDG for the next meeting (Bardia)
- Scan Bugzilla for loop related issues so we can identify common
deficiencies and discuss solutions. (Vivek)
- Survey existing loop passes to see what form of loop they expect. This
will help us decide on the definition of canonicity. (Min-Yih Hsu)
- Follow up on the status of New vs Old Pass Manager and when the New PM is
expected to become the default. (Bardia)
- Use llvm-dev mailing list and [LOOP] prefix for discussions about loop
optimization. (everyone)
- Include the webex link in the meeting minutes and agenda sent to
llvm-dev. (Bardia)

Tentative Agenda (July 3rd):
- Status Updates
	- Directed Graph (Bardia)
	- Loop Cache Cost Analysis (https://reviews.llvm.org/D63459) (Ettore)
	- Survey of Loop Canonical Form expected by various passes (Min-Yih
	- Survey of Loop related bugs in Bugzilla (Vivek)
	- Others?
- Data Dependence Graph Presentation (Bardia)
- Delinearization (Gary Elsesser)

Tentative Agenda (July 17th):
	- Status Updates
		- ...
	- Loop vs Function pass (Jamie Schmeiser)
	- ...

Bardia Mahjour
Compiler Optimizations
IBM Toronto Software Lab
bmahjour at ca.ibm.com (905) 413-2336
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190619/ee955bbe/attachment-0001.html>

More information about the llvm-dev mailing list