[llvm-commits] [llvm] r78157 - in /llvm/trunk: include/llvm/Analysis/LoopDependenceAnalysis.h lib/Analysis/LoopDependenceAnalysis.cpp test/Analysis/LoopDependenceAnalysis/alias.ll test/Analysis/LoopDependenceAnalysis/ziv.ll
Nick Lewycky
nicholas at mxc.ca
Tue Aug 4 22:29:49 PDT 2009
Andreas Bolka wrote:
> Author: abolka
> Date: Tue Aug 4 23:26:05 2009
> New Revision: 78157
>
> URL: http://llvm.org/viewvc/llvm-project?rev=78157&view=rev
> Log:
> ZIV tester for LDA.
>
> Modified:
> llvm/trunk/include/llvm/Analysis/LoopDependenceAnalysis.h
> llvm/trunk/lib/Analysis/LoopDependenceAnalysis.cpp
> llvm/trunk/test/Analysis/LoopDependenceAnalysis/alias.ll
> llvm/trunk/test/Analysis/LoopDependenceAnalysis/ziv.ll
>
> Modified: llvm/trunk/include/llvm/Analysis/LoopDependenceAnalysis.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopDependenceAnalysis.h?rev=78157&r1=78156&r2=78157&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Analysis/LoopDependenceAnalysis.h (original)
> +++ llvm/trunk/include/llvm/Analysis/LoopDependenceAnalysis.h Tue Aug 4 23:26:05 2009
> @@ -77,6 +77,8 @@
> bool isAffine(const SCEV*) const;
>
> /// TODO: doc
> + bool isZIVPair(const SCEV*, const SCEV*) const;
> + DependenceResult analyseZIV(const SCEV*, const SCEV*, Subscript*) const;
> DependenceResult analyseSubscript(const SCEV*, const SCEV*, Subscript*) const;
> DependenceResult analysePair(DependencePair*) const;
>
>
> Modified: llvm/trunk/lib/Analysis/LoopDependenceAnalysis.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopDependenceAnalysis.cpp?rev=78157&r1=78156&r2=78157&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Analysis/LoopDependenceAnalysis.cpp (original)
> +++ llvm/trunk/lib/Analysis/LoopDependenceAnalysis.cpp Tue Aug 4 23:26:05 2009
> @@ -136,6 +136,19 @@
> return isLoopInvariant(S) || (rec && rec->isAffine());
> }
>
> +bool LoopDependenceAnalysis::isZIVPair(const SCEV *A, const SCEV *B) const {
> + return isLoopInvariant(A) && isLoopInvariant(B);
> +}
> +
> +LoopDependenceAnalysis::DependenceResult
> +LoopDependenceAnalysis::analyseZIV(const SCEV *A,
> + const SCEV *B,
> + Subscript *S) const {
> + assert(isZIVPair(A, B));
> + const SCEV *diff = SE->getMinusSCEV(A, B);
> + return diff->isZero() ? Dependent : Independent;
Doesn't that imply A == B ? Dependent : Independent? In what other case
could this happen?
Nick
> +}
> +
> LoopDependenceAnalysis::DependenceResult
> LoopDependenceAnalysis::analyseSubscript(const SCEV *A,
> const SCEV *B,
> @@ -152,7 +165,10 @@
> return Unknown;
> }
>
> - // TODO: Implement ZIV/SIV/MIV testers.
> + if (isZIVPair(A, B))
> + return analyseZIV(A, B, S);
> +
> + // TODO: Implement SIV/MIV testers.
>
> DEBUG(errs() << " -> [?] cannot analyse subscript\n");
> return Unknown;
>
> Modified: llvm/trunk/test/Analysis/LoopDependenceAnalysis/alias.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopDependenceAnalysis/alias.ll?rev=78157&r1=78156&r2=78157&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Analysis/LoopDependenceAnalysis/alias.ll (original)
> +++ llvm/trunk/test/Analysis/LoopDependenceAnalysis/alias.ll Tue Aug 4 23:26:05 2009
> @@ -34,7 +34,7 @@
> %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]
> %x = load i32* %x.ld.addr
> store i32 %x, i32* %x.st.addr
> -; CHECK: 0,1: dep
> +; CHECK: 0,1: ind
> %i.next = add i64 %i, 1
> %exitcond = icmp eq i64 %i.next, 256
> br i1 %exitcond, label %for.end, label %for.body
>
> Modified: llvm/trunk/test/Analysis/LoopDependenceAnalysis/ziv.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopDependenceAnalysis/ziv.ll?rev=78157&r1=78156&r2=78157&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Analysis/LoopDependenceAnalysis/ziv.ll (original)
> +++ llvm/trunk/test/Analysis/LoopDependenceAnalysis/ziv.ll Tue Aug 4 23:26:05 2009
> @@ -12,7 +12,7 @@
> %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]
> %x = load i32* getelementptr ([256 x i32]* @x, i32 0, i64 6)
> store i32 %x, i32* getelementptr ([256 x i32]* @x, i32 0, i64 5)
> -; CHECK: 0,1: dep
> +; CHECK: 0,1: ind
> %i.next = add i64 %i, 1
> %exitcond = icmp eq i64 %i.next, 256
> br i1 %exitcond, label %for.end, label %for.body
> @@ -34,7 +34,7 @@
> %i = phi i64 [ 0, %entry ], [ %i.next, %for.body ]
> %x = load i32* %x.ld.addr
> store i32 %x, i32* %x.st.addr
> -; CHECK: 0,1: dep
> +; CHECK: 0,1: ind
> %i.next = add i64 %i, 1
> %exitcond = icmp eq i64 %i.next, 256
> br i1 %exitcond, label %for.end, label %for.body
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list