diff options
| author | Andrew Trick <atrick@apple.com> | 2012-09-19 04:43:19 +0000 |
|---|---|---|
| committer | Andrew Trick <atrick@apple.com> | 2012-09-19 04:43:19 +0000 |
| commit | 3b8fb648c6e1c519b7e0f487f4fb511744869d35 (patch) | |
| tree | d000416a7d5a704fe21de847176ccf28ee470653 /utils/TableGen/CodeGenSchedule.cpp | |
| parent | 57838db0a1cfcfbb8d1df59562dccd22208cd703 (diff) | |
SchedMachineModel: compress the CPU's WriteLatencyTable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164199 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/CodeGenSchedule.cpp')
| -rw-r--r-- | utils/TableGen/CodeGenSchedule.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/utils/TableGen/CodeGenSchedule.cpp b/utils/TableGen/CodeGenSchedule.cpp index 0babda3c4f..7946b42b2c 100644 --- a/utils/TableGen/CodeGenSchedule.cpp +++ b/utils/TableGen/CodeGenSchedule.cpp @@ -270,6 +270,21 @@ unsigned CodeGenSchedModels::getSchedRWIdx(Record *Def, bool IsRead, return 0; } +bool CodeGenSchedModels::hasReadOfWrite(Record *WriteDef) const { + for (unsigned i = 0, e = SchedReads.size(); i < e; ++i) { + Record *ReadDef = SchedReads[i].TheDef; + if (!ReadDef || !ReadDef->isSubClassOf("ProcReadAdvance")) + continue; + + RecVec ValidWrites = ReadDef->getValueAsListOfDefs("ValidWrites"); + if (std::find(ValidWrites.begin(), ValidWrites.end(), WriteDef) + != ValidWrites.end()) { + return true; + } + } + return false; +} + namespace llvm { void splitSchedReadWrites(const RecVec &RWDefs, RecVec &WriteDefs, RecVec &ReadDefs) { |
