summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h
diff options
context:
space:
mode:
authorTanya Lattner <tonic@nondot.org>2005-04-22 06:32:48 +0000
committerTanya Lattner <tonic@nondot.org>2005-04-22 06:32:48 +0000
commit42ed14860b3df9a0d57e9c04eab459c58d0894ad (patch)
tree4a3b33a4cb10b46519216f2691742701ea13f676 /llvm/lib/Target/SparcV9/ModuloScheduling/DependenceAnalyzer.h
parente25cfaee55be90ee167204b65a35e56721cef2b5 (diff)
downloadbcm5719-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.h23
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);
};
OpenPOWER on IntegriCloud