summaryrefslogtreecommitdiffstats
path: root/polly/test/Isl/CodeGen/read-only-scalars.ll
Commit message (Collapse)AuthorAgeFilesLines
* Load/Store scalar accesses before/after the statement itselfMichael Kruse2015-10-171-1/+1
| | | | | | | | | | | | | | | | | | | | | Instead of generating implicit loads within basic blocks, put them before the instructions of the statment itself, including non-affine subregions. The region's entry node is dominating all blocks in the region and therefore the loaded value will be available there. Implicit writes in block-stmts were already stored back at the end of the block. Now, also generate the stores of non-affine subregions when leaving the statement, i.e. in the exiting block. This change is required for array-mapped implicits ("De-LICM") to ensure that there are no dependencies of demoted scalars within statments. Statement load all required values, operator on copied in registers, and then write back the changed value to the demoted memory. Lifetimes analysis within statements becomes unecessary. Differential Revision: http://reviews.llvm.org/D13487 llvm-svn: 250625
* tests: Drop -polly-detect-unprofitable and -polly-no-early-exitTobias Grosser2015-10-061-2/+2
| | | | | | | | These flags are now always passed to all tests and need to be disabled if not needed. Disabling these flags, rather than passing them to almost all tests, significantly simplfies our RUN: lines. llvm-svn: 249422
* Store scalar dependences from outside the scop into alloca locationsTobias Grosser2015-08-301-1/+6
| | | | | | | | | | | | We already modeled read-only dependences to scalar values defined outside the scop as memory reads and also generated read accesses from the corresponding alloca instructions that have been used to pass these scalar values around during code generation. However, besides for PHI nodes that have already been handled, we failed to store the orignal read-only scalar values into these alloc. This commit extends the initialization of scalar values to all read-only scalar values used within the scop. llvm-svn: 246394
* Do not detect Scops with only one loop.Tobias Grosser2015-08-271-2/+6
| | | | | | | | | | | | | | | | | | | | If a region does not have more than one loop, we do not identify it as a Scop in ScopDetection. The main optimizations Polly is currently performing (tiling, preparation for outer-loop vectorization and loop fusion) are unlikely to have a positive impact on individual loops. In some cases, Polly's run-time alias checks or conditional hoisting may still have a positive impact, but those are mostly enabling transformations which LLVM already performs for individual loops. As we do not focus on individual loops, we leave them untouched to not introduce compile time regressions and execution time noise. This results in good compile time reduction (oourafft: -73.99%, smg2000: -56.25%). Contributed-by: Pratik Bhatu <cs12b1010@iith.ac.in> Reviewers: grosser Differential Revision: http://reviews.llvm.org/D12268 llvm-svn: 246161
* Enable code generation of scalar dependences from function argumentsTobias Grosser2015-08-131-0/+33
This change extends the BlockGenerator to not only allow Instructions as base elements of scalar dependences, but any llvm::Value. This allows us to code-generate scalar dependences which reference function arguments, as they arise when moddeling read-only scalar dependences. llvm-svn: 244874
OpenPOWER on IntegriCloud