[PATCH] D100331: [Dependence Analysis] Fix ExactSIV producing wrong analysis
Michael Kruse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 26 14:34:02 PDT 2021
Meinersbur accepted this revision.
Meinersbur added a comment.
This revision is now accepted and ready to land.
I am approving this patch seeing that it is a significant improvement.
For `exact0`, you both seem to agree that it should be handled in a separate patch.
================
Comment at: llvm/test/Analysis/DependenceAnalysis/Coupled.ll:554
; CHECK: da analyze - none!
-; CHECK: da analyze - flow [<]!
+; CHECK: da analyze - flow [=|<]!
; CHECK: da analyze - confused!
----------------
Looks correct. Only intersection of accessed elements is when 3*i-18 = 18-i = i, which solves to i = 9.
================
Comment at: llvm/test/Analysis/DependenceAnalysis/ExactSIV.ll:19
; CHECK: da analyze - none!
-; CHECK: da analyze - flow [>]!
+; CHECK: da analyze - flow [<=|<]!
; CHECK: da analyze - confused!
----------------
Meinersbur wrote:
> artemrad wrote:
> > bmahjour wrote:
> > > The `<=` part is correct, but I'm not sure about the `|<` part. The dependence is loop carried for the most part (except when i = 9). I think this might be because we treat the existence of an `EQ` as signifying loop independent dependence, which should probably be reconsidered in a separate patch.
> > You are correct, that is exactly the reason for `|<`. I have another patch down the line to fix this confusing notation.
> This is marked as done, but I don't see being it addressed.
`|<` is printed when `isLoopIndependent()` returns true. If "loop independent" means the absence of loop-carried dependences, then `|<` is wrong; i=5..8 are loop-carried.
What is your improved notation?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D100331/new/
https://reviews.llvm.org/D100331
More information about the llvm-commits
mailing list