History log of /llvm-project-15.0.7/polly/lib/CodeGen/CodeGeneration.cpp (Results 76 – 100 of 162)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 82a1c7de 14-Aug-2015 Michael Kruse <[email protected]>

Make TempScopInfo a RegionPass

This modifies the order in which Polly passes are executed.

Assuming a function has two scops (A and B), the order before was:

FunctionPassManager
ScopDetection

Make TempScopInfo a RegionPass

This modifies the order in which Polly passes are executed.

Assuming a function has two scops (A and B), the order before was:

FunctionPassManager
ScopDetection
IndependentBlocks
TempScopInfo for A and B
RegionPassManager
ScopInfo for A
DependenceInfo for A
IslScheduleOptimizer for A
IslAstInfo for A
CodeGeneration for A
ScopInfo for B
DependenceInfo for B
IslScheduleOptimizer for B
IslAstInfo for B
CodeGeneration for B

After this patch:

FunctionPassManager
ScopDetection
IndependentBlocks
RegionPassManager
TempScopInfo for A
ScopInfo for A
DependenceInfo for A
IslScheduleOptimizer for A
IslAstInfo for A
CodeGeneration for A
TempScopInfo for B
ScopInfo for B
DependenceInfo for B
IslScheduleOptimizer for B
IslAstInfo for B
CodeGeneration for B

TempScopInfo for B might store information and references to the IR
that CodeGeneration for A might modify. Changing the order ensures that
the IR is not modified from the analysis of a region until code
generation.

Reviewers: grosser

Differential Revision: http://reviews.llvm.org/D12014

llvm-svn: 245091

show more ...


# 9c483c58 11-Aug-2015 Michael Kruse <[email protected]>

Assign regions to all BBs from CodeGeneration

In order to have a valid region analysis, we assign all newly created blocks to the parent of the scop's region. This is correct for any pre-existing re

Assign regions to all BBs from CodeGeneration

In order to have a valid region analysis, we assign all newly created blocks to the parent of the scop's region. This is correct for any pre-existing regions (including the scop's region and its parent), but does not discover any region inside the generated code. For Polly this is not necessary because we do not want to re-run Polly on its own generated code anyway.

Reviewers: grosser

Part of Differential Revision: http://reviews.llvm.org/D11867

llvm-svn: 244608

show more ...


# 22370884 11-Aug-2015 Michael Kruse <[email protected]>

Revise the simplification of regions

The previous code had several problems:

For newly created BasicBlocks it did not (always) call RegionInfo::setRegionFor in order to update its analysis. At the

Revise the simplification of regions

The previous code had several problems:

For newly created BasicBlocks it did not (always) call RegionInfo::setRegionFor in order to update its analysis. At the moment RegionInfo does not verify its BBMap, but will in the future. This is fixed by determining the region new BBs belong to and set it accordingly. The new executeScopConditionally() requires accurate getRegionFor information.

Which block is created by SplitEdge depends on the incoming and outgoing edges of the blocks it connects, which makes handling its output more difficult than it needs to be. Especially for finding which block has been created an to assign a region to it for the setRegionFor problem above. This patch uses an implementation for splitEdge that always creates a block between the predecessor and successor. simplifyRegion has also been simplified by using SplitBlockPredecessors instead of SplitEdge. Isolating the entries and exits have been refectored into individual functions.

Previously simplifyRegion did more than just ensuring that there is only one entering and one exiting edge. It ensured that the entering block had no other outgoing edge which was necessary for executeScopConditionally(). Now the latter uses the alternative splitEdge implementation which can handle this situation so simplifyRegion really only needs to simplify the region.

Also, executeScopConditionally assumed that there can be no PHI nodes in blocks with one incoming edge. This is wrong and LCSSA deliberately produces such edges. However, previous passes ensured that there can be no such PHIs in exit nodes, but which will no longer hold in the future.

The new code that the property that it preserves the identity of region block (the property that the memory address of the BasicBlock containing the instructions remains the same; new blocks only contain PHI nodes and a terminator), especially the entry block. As a result, there is no need to update the reference to the BasicBlock of ScopStmt that contain its instructions because they have been moved to other basic blocks.

Reviewers: grosser

Part of Differential Revision: http://reviews.llvm.org/D11867

llvm-svn: 244606

show more ...


Revision tags: llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1
# ecff11dc 22-May-2015 Johannes Doerfert <[email protected]>

Add scalar and phi code generation

To reduce compile time and to allow more and better quality SCoPs in
the long run we introduced scalar dependences and PHI-modeling. This
patch will now allo

Add scalar and phi code generation

To reduce compile time and to allow more and better quality SCoPs in
the long run we introduced scalar dependences and PHI-modeling. This
patch will now allow us to generate code if one or both of those
options are set. While the principle of demoting scalars as well as
PHIs to memory in order to communicate their value stays the same,
this allows to delay the demotion till the very end (the actual code
generation). Consequently:
- We __almost__ do not modify the code if we do not generate code
for an optimized SCoP in the end. Thus, the early exit as well as
the unprofitable option will now actually preven us from
introducing regressions in case we will probably not get better
code.
- Polly can be used as a "pure" analyzer tool as long as the code
generator is set to none.
- The original SCoP is almost not touched when the optimized version
is placed next to it. Runtime regressions if the runtime checks
chooses the original are not to be expected and later
optimizations do not need to revert the demotion for that part.
- We will generate direct accesses to the demoted values, thus there
are no "trivial GEPs" that select the first element of a scalar we
demoted and treated as an array.

Differential Revision: http://reviews.llvm.org/D7513

llvm-svn: 238070

show more ...


Revision tags: llvmorg-3.6.1
# 09d30697 12-May-2015 Tobias Grosser <[email protected]>

Rename IslCodeGeneration to CodeGeneration

Besides class, function and file names, we also change the command line option
from -polly-codegen-isl to just -polly-codegen. The isl postfix is a leftove

Rename IslCodeGeneration to CodeGeneration

Besides class, function and file names, we also change the command line option
from -polly-codegen-isl to just -polly-codegen. The isl postfix is a leftover
from the times when we still had the CLooG based -polly-codegen. Today it is
just redundant and we drop it.

llvm-svn: 237099

show more ...


Revision tags: llvmorg-3.6.1-rc1, llvmorg-3.5.2, llvmorg-3.5.2-rc1, llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1
# 683b8e44 30-Nov-2014 Tobias Grosser <[email protected]>

Remove -polly-codegen-scev option and related code

SCEV based code generation has been the default for two weeks after having
been tested for a long time. We now drop the support the non-scev-based

Remove -polly-codegen-scev option and related code

SCEV based code generation has been the default for two weeks after having
been tested for a long time. We now drop the support the non-scev-based code
generation.

llvm-svn: 222978

show more ...


# c98a8fcc 14-Nov-2014 Tobias Grosser <[email protected]>

Use nullptr instead of '0' for pointers

llvm-svn: 221982


# f084edd0 22-Oct-2014 Tobias Grosser <[email protected]>

Use braces in multi-statement DEBUG() code [NFC]

By adding braces into the DEBUG statement we can make clang-format format code
such as:

DEBUG(stmt1(); stmt2())

as multi-line code:

DEBUG({

Use braces in multi-statement DEBUG() code [NFC]

By adding braces into the DEBUG statement we can make clang-format format code
such as:

DEBUG(stmt1(); stmt2())

as multi-line code:

DEBUG({
stmt1();
stmt2();
});

This makes control-flow in debug statements easier to read.

llvm-svn: 220441

show more ...


# 12b355a2 03-Oct-2014 Johannes Doerfert <[email protected]>

[Refactor] Generalize parallel code generation

+ Generalized function names and comments
+ Removed OpenMP (omp) from the names and comments
+ Use common names (non OpenMP specific) for run

[Refactor] Generalize parallel code generation

+ Generalized function names and comments
+ Removed OpenMP (omp) from the names and comments
+ Use common names (non OpenMP specific) for runtime library call creation
methodes
+ Commented the parallel code generator and all its member functions
+ Refactored some values and methodes

Differential Revision: http://reviews.llvm.org/D4990

llvm-svn: 219003

show more ...


# 38262244 10-Sep-2014 Johannes Doerfert <[email protected]>

[Refactor] Cleanup isl code generation

Summary:
+ Refactor the runtime check (RTC) build function
+ Added helper function to create an PollyIRBuilder
+ Change the simplify region function to c

[Refactor] Cleanup isl code generation

Summary:
+ Refactor the runtime check (RTC) build function
+ Added helper function to create an PollyIRBuilder
+ Change the simplify region function to create not
only unique entry and exit edges but also enfore that
the entry edge is unconditional
+ Cleaned the IslCodeGeneration runOnScop function:
- less post-creation changes of the created IR
+ Adjusted and added test cases

Reviewers: grosser, sebpop, simbuerg, dpeixott

Subscribers: llvm-commits, #polly

Differential Revision: http://reviews.llvm.org/D5076

llvm-svn: 217508

show more ...


# 0244ee87 10-Sep-2014 Tobias Grosser <[email protected]>

Use "const auto &" in range based for loops

This previous code added in r216842 most likely created unnecessary copies.

Reported-by: Duncan P. N. Exon Smith <[email protected]>
llvm-svn: 217507


Revision tags: llvmorg-3.5.0
# 6a4d3f74 31-Aug-2014 Tobias Grosser <[email protected]>

Fix formatting

llvm-svn: 216844


# 1fee67d6 31-Aug-2014 Tobias Grosser <[email protected]>

Use range based for loops

llvm-svn: 216842


Revision tags: llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3
# 28735947 16-Aug-2014 Tobias Grosser <[email protected]>

Revert "[Refactor] Cleanup runtime code generation"

This reverts commit 215466 (and 215528, a trivial formatting fix).

The intention of these commits is a good one, but unfortunately they broke
our

Revert "[Refactor] Cleanup runtime code generation"

This reverts commit 215466 (and 215528, a trivial formatting fix).

The intention of these commits is a good one, but unfortunately they broke
our LNT buildbot:

http://lab.llvm.org:8011/builders/perf-x86_64-penryn-O3-polly-codegen-isl

Several of the cleanup changes that have been combined in this 'fixup' are
trivial and could probably be committed as obvious changes without risking to
break the build. The remaining changes are little and it should be easy to
figure out what went wrong.

llvm-svn: 215817

show more ...


# 9744c4af 12-Aug-2014 Johannes Doerfert <[email protected]>

[Refactor] Cleanup runtime code generation

+ Use regexp in two test case.
+ Refactor the runtime condition build function

llvm-svn: 215466


# c5129d85 08-Aug-2014 Johannes Doerfert <[email protected]>

[Fix] Broken build after r215121

llvm-svn: 215183


Revision tags: llvmorg-3.5.0-rc2
# d9e1dbd3 29-Jul-2014 Johannes Doerfert <[email protected]>

[Refactor] Use non-const MemoryAccess base addresses

llvm-svn: 214168


# 515f8577 28-Jul-2014 Johannes Doerfert <[email protected]>

Replace the dependences parallelism check by the IslAst one

llvm-svn: 214061


Revision tags: llvmorg-3.5.0-rc1
# 8ca36815 19-Jul-2014 Matt Arsenault <[email protected]>

Update for RegionInfo changes.

Mostly related to missing includes and renaming of
the pass to RegionInfoPass.

llvm-svn: 213457


# 483a90d1 09-Jul-2014 Tobias Grosser <[email protected]>

clang-format polly to avoid buildbot noise

llvm-svn: 212609


# 083d3d3c 28-Jun-2014 Tobias Grosser <[email protected]>

[C++11] Use more range based fors

llvm-svn: 211981


# 868832b3 19-Jun-2014 Tobias Grosser <[email protected]>

Update for ScopStmt iterator name change in LLVM r210927

Contributed-by: Yabin Hu <[email protected]>
llvm-svn: 211280


Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1
# ba1724da 07-May-2014 Tobias Grosser <[email protected]>

Remove unnecessary explicit typing in std::make_pair

Contributed-by: Yabin Hu <[email protected]>
llvm-svn: 208181


# cfee96a4 07-May-2014 Tobias Grosser <[email protected]>

Add the missing 'LoopToScev' parameter

Contributed-by: Yabin Hu <[email protected]>
llvm-svn: 208180


Revision tags: llvmorg-3.4.1, llvmorg-3.4.1-rc2
# 95fef944 22-Apr-2014 Chandler Carruth <[email protected]>

[Modules] Fix potential ODR violations by sinking the DEBUG_TYPE
definition below all of the header #include lines, Polly edition.

If you want to know more details about this, you can see the recent

[Modules] Fix potential ODR violations by sinking the DEBUG_TYPE
definition below all of the header #include lines, Polly edition.

If you want to know more details about this, you can see the recent
commits to Debug.h in LLVM. This is just the Polly segment of a cleanup
I'm doing globally for this macro.

llvm-svn: 206852

show more ...


1234567