History log of /external/llvm/test/Transforms/GVN/pre-load.ll
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
39f4e8d9cce22b60a3417a5f17c847fa5b1daebf 14-Jul-2013 Stephen Lin <stephenwlin@gmail.com> Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change.

This update was done with the following bash script:

find test/Transforms -name "*.ll" | \
while read NAME; do
echo "$NAME"
if ! grep -q "^; *RUN: *llc" $NAME; then
TEMP=`mktemp -t temp`
cp $NAME $TEMP
sed -n "s/^define [^@]*@\([A-Za-z0-9_]*\)(.*$/\1/p" < $NAME | \
while read FUNC; do
sed -i '' "s/;\(.*\)\([A-Za-z0-9_]*\):\( *\)@$FUNC\([( ]*\)\$/;\1\2-LABEL:\3@$FUNC(/g" $TEMP
done
mv $TEMP $NAME
fi
done


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186268 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
c1be92f3bb9158eade30d97db6997e2fe78150ab 18-Oct-2010 Dan Gohman <gohman@apple.com> Make BasicAliasAnalysis a normal AliasAnalysis implementation which
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.

Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.

Update tests to explicitly request -basicaa.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
713bc585ef5f60129c950f69392cefa85b9aaac1 16-Feb-2010 Bob Wilson <bob.wilson@apple.com> Testcase for critical edge splitting with load PRE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96385 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
ff0a883fe93df3c7fff056f9fb48dc422f9369ac 29-Nov-2009 Chris Lattner <sabre@nondot.org> add PR#


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90049 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
78c6d4fa9c95e5f841a7f081dcea238054453874 29-Nov-2009 Chris Lattner <sabre@nondot.org> Add a testcase for:

void test(int N, double* G) {
long j;
for (j = 1; j < N - 1; j++)
G[j] = G[j] + G[j+1] + G[j-1];
}

which we now compile to one load in the loop:

LBB1_2: ## %bb
movsd 16(%rsi,%rax,8), %xmm2
incq %rdx
addsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movapd %xmm2, %xmm1
movsd %xmm0, 8(%rsi,%rax,8)
incq %rax
cmpq %rcx, %rax
jne LBB1_2

instead of:

LBB1_2: ## %bb
movsd 8(%rsi,%rax,8), %xmm0
addsd 16(%rsi,%rax,8), %xmm0
addsd (%rsi,%rax,8), %xmm0
movsd %xmm0, 8(%rsi,%rax,8)
incq %rax
cmpq %rcx, %rax
jne LBB1_2



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90048 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
9fed3c2835b61123528d5abe1f8ebc47aa6a81e4 29-Nov-2009 Chris Lattner <sabre@nondot.org> add a testcase for

void test9(int N, double* G) {
long j;
for (j = 1; j < N - 1; j++)
G[j+1] = G[j] + G[j+1];
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
0c264b16b0e8a373888d1a5cfeb90af4fda3cd14 28-Nov-2009 Chris Lattner <sabre@nondot.org> reenable load address insertion in load pre. This allows us to
handle cases like this:
void test(int N, double* G) {
long j;
for (j = 1; j < N - 1; j++)
G[j+1] = G[j] + G[j+1];
}

where G[1] isn't live into the loop.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
971fd57f7d8f6496c5170499ac40ddee538488b3 27-Nov-2009 Chris Lattner <sabre@nondot.org> disable value insertion for now, I need to figure out how
to inform GVN about the newly inserted values. This fixes
PR5631.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
11c6bab704a0f82f59dcb2f409f7d6ac3b1821f1 27-Nov-2009 Chris Lattner <sabre@nondot.org> add support for recursive phi translation and phi
translation of add with immediate. This allows us
to optimize this function:

void test(int N, double* G) {
long j;
G[1] = 1;
for (j = 1; j < N - 1; j++)
G[j+1] = G[j] + G[j+1];
}

to only do one load every iteration of the loop.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
9a5c22cc5e741bc3022366e85825ba99236027ed 27-Nov-2009 Chris Lattner <sabre@nondot.org> add two simple test cases we now optimize (to one load in the loop each) and one we don't (corresponding to the fixme I added yesterday).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90012 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
616613d7a4ddc7cefce53b2bfe3fdcdec6b032c2 27-Nov-2009 Chris Lattner <sabre@nondot.org> teach GVN's load PRE to insert computations of the address in predecessors
where it is not available. It's unclear how to get this inserted
computation into GVN's scalar availability sets, Owen, help? :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
d280d85791c1fad9e625a5e2f472092b0c81c14e 27-Nov-2009 Chris Lattner <sabre@nondot.org> add some tests for memdep phi translation + PRE.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
8dca876ab767327411dcdfc6fadd90fb2f8cd206 27-Nov-2009 Chris Lattner <sabre@nondot.org> filecheckize


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
9b15d60c7a1d8a4fb1c40a9d4ede49b1003bcddf 27-Nov-2009 Chris Lattner <sabre@nondot.org> rename test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89993 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
4f118f0a20413139f6da22628a28ecf1f39db0f1 13-Dec-2008 Chris Lattner <sabre@nondot.org> rename some tests to be more uniform in naming convention.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60988 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
7f7c7366829f58d067fd6a02c0540a01908c5bc2 05-Dec-2008 Chris Lattner <sabre@nondot.org> Fix test/Transforms/GVN/pre-load.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60594 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll
c89c6a964c6091e07a51a22ad8c1c38295eb8599 02-Dec-2008 Chris Lattner <sabre@nondot.org> Implement PRE of loads in the GVN pass with a pretty cheap and
straight-forward implementation. This does not require any extra
alias analysis queries beyond what we already do for non-local loads.

Some programs really really like load PRE. For example, SPASS triggers
this ~1000 times, ~300 times in 255.vortex, and ~1500 times on 403.gcc.

The biggest limitation to the implementation is that it does not split
critical edges. This is a huge killer on many programs and should be
addressed after the initial patch is enabled by default.

The implementation of this should incidentally speed up rejection of
non-local loads because it avoids creating the repl densemap in cases
when it won't be used for fully redundant loads.

This is currently disabled by default.
Before I turn this on, I need to fix a couple of miscompilations in
the testsuite, look at compile time performance numbers, and look at
perf impact. This is pretty close to ready though.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/test/Transforms/GVN/pre-load.ll