diff options
| author | Tanya Lattner <tonic@nondot.org> | 2005-04-22 06:32:48 +0000 |
|---|---|---|
| committer | Tanya Lattner <tonic@nondot.org> | 2005-04-22 06:32:48 +0000 |
| commit | 42ed14860b3df9a0d57e9c04eab459c58d0894ad (patch) | |
| tree | 4a3b33a4cb10b46519216f2691742701ea13f676 /llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h | |
| parent | e25cfaee55be90ee167204b65a35e56721cef2b5 (diff) | |
| download | bcm5719-llvm-42ed14860b3df9a0d57e9c04eab459c58d0894ad.tar.gz bcm5719-llvm-42ed14860b3df9a0d57e9c04eab459c58d0894ad.zip | |
Updated dependence analyzer. Fixed numerous bugs. Same stage scheduling, etc.
llvm-svn: 21444
Diffstat (limited to 'llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h')
| -rw-r--r-- | llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h b/llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h index 6223fb74331..2440ea9d390 100644 --- a/llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h +++ b/llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h @@ -17,10 +17,12 @@ #include "llvm/Function.h" #include "llvm/Pass.h" #include "llvm/Analysis/AliasAnalysis.h" +#include "llvm/Analysis/ScalarEvolutionExpressions.h" #include "llvm/Target/TargetData.h" #include <vector> namespace llvm { + //class to represent a dependence struct Dependence { @@ -47,11 +49,25 @@ namespace llvm { class DependenceAnalyzer : public FunctionPass { + + AliasAnalysis *AA; TargetData *TD; + ScalarEvolution *SE; + + void advancedDepAnalysis(GetElementPtrInst *gp1, GetElementPtrInst *gp2, + bool valLoad, bool val2Load, + std::vector<Dependence> &deps, bool srcBeforeDest); + + void AnalyzeDeps(Value *val, Value *val2, bool val1Load, bool val2Load, + std::vector<Dependence> &deps, BasicBlock *BB, + bool srcBeforeDest); + + void createDep(std::vector<Dependence> &deps, bool valLoad, bool val2Load, + bool srcBeforeDest, int diff = 0); public: - DependenceAnalyzer() { AA = 0; TD = 0; } + DependenceAnalyzer() { AA = 0; TD = 0; SE = 0; } virtual bool runOnFunction(Function &F); virtual const char* getPassName() const { return "DependenceAnalyzer"; } @@ -59,10 +75,13 @@ namespace llvm { virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<AliasAnalysis>(); AU.addRequired<TargetData>(); + AU.addRequired<ScalarEvolution>(); + AU.setPreservesAll(); } //get dependence info - DependenceResult getDependenceInfo(Instruction *inst1, Instruction *inst2); + DependenceResult getDependenceInfo(Instruction *inst1, Instruction *inst2, + bool srcBeforeDest); }; |

