This is an archive of the discontinued LLVM Phabricator instance.

Allow non-affine control flow -- Code Generation
ClosedPublic

Authored by jdoerfert on Feb 23 2015, 5:39 PM.

Details

Summary
This is the code generation for region statements that are created
when non-affine control flow was present in the input. A new
generator, similar to the block or vector generator, for regions is
used to traverse and copy the region statement and to adjust the
control flow inside the new region in the end.

Depends on D7846

Diff Detail

Event Timeline

jdoerfert updated this revision to Diff 20562.Feb 23 2015, 5:39 PM
jdoerfert retitled this revision from to Allow non-affine control flow -- Code Generation.
jdoerfert updated this object.
jdoerfert added subscribers: Restricted Project, Unknown Object (MLST).

The chain for non-affine subregions without loops passes all lnt tests and increses the number of SCoPs from ~1500 to ~1800

sebpop edited edge metadata.Feb 24 2015, 7:10 AM

LGTM.
Let's wait for Tobi's comments before committing the change.

lib/CodeGen/BlockGenerators.cpp
668

Update the comment to "only region statements can be copied by the region generator"

Also, have you tried the non affine scop generator on llvm's test-suite?

The chain for non-affine subregions without loops passes all lnt tests and increses the number of SCoPs from ~1500 to ~1800

When I talk about lnt I mean I run polly on the llvm-test-suite.

grosser accepted this revision.Feb 24 2015, 8:07 AM
grosser edited edge metadata.

LGTM.

This revision is now accepted and ready to land.Feb 24 2015, 8:07 AM
jdoerfert closed this revision.Feb 24 2015, 8:37 AM

commited in r230340.