diff options
author | Michael Kruse <llvm@meinersbur.de> | 2015-10-17 21:36:00 +0000 |
---|---|---|
committer | Michael Kruse <llvm@meinersbur.de> | 2015-10-17 21:36:00 +0000 |
commit | 225f0d1ee2d333919e8df066460814115a8d82ec (patch) | |
tree | 39187fd2c19acf90b51f041f8376c4bfbbe8e7d7 /polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll | |
parent | ec15ea12e70279c2ef5e645945f2f07f41b56214 (diff) | |
download | bcm5719-llvm-225f0d1ee2d333919e8df066460814115a8d82ec.tar.gz bcm5719-llvm-225f0d1ee2d333919e8df066460814115a8d82ec.zip |
Load/Store scalar accesses before/after the statement itself
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
Diffstat (limited to 'polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll')
-rw-r--r-- | polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll b/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll index 955d4346c95..2ad52d180e4 100644 --- a/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll +++ b/polly/test/Isl/CodeGen/non-affine-phi-node-expansion-4.ll @@ -15,8 +15,8 @@ loop: ; CHECK-NEXT: %polly.subregion.iv = phi i32 [ 0, %polly.stmt.loop.entry ] ; CHECK-NEXT: %p_val0 = fadd float 1.000000e+00, 2.000000e+00 ; CHECK-NEXT: %p_val1 = fadd float 1.000000e+00, 2.000000e+00 -; CHECK-NEXT: store float %p_val0, float* %merge.phiops ; CHECK-NEXT: %polly.subregion.iv.inc = add i32 %polly.subregion.iv, 1 +; CHECK-NEXT: store float %p_val0, float* %merge.phiops ; CHECK-NEXT: br i1 ; The interesting instruction here is %val2, which does not dominate the exit of |