summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/CodeGenSchedule.h
diff options
context:
space:
mode:
authorSimon Dardis <simon.dardis@imgtec.com>2016-06-23 09:22:11 +0000
committerSimon Dardis <simon.dardis@imgtec.com>2016-06-23 09:22:11 +0000
commit081e4bb14c01e4af6740470487a3c99235cf68c8 (patch)
tree9cd4f6e05d27587c413bb918a017feb321550a87 /llvm/utils/TableGen/CodeGenSchedule.h
parente440f99913f9e3cb02331f95808cfe57f0b7836e (diff)
downloadbcm5719-llvm-081e4bb14c01e4af6740470487a3c99235cf68c8.tar.gz
bcm5719-llvm-081e4bb14c01e4af6740470487a3c99235cf68c8.zip
[misched] Extend scheduler to handle unsupported features
Currently isComplete = 1 requires that every instruction must be described, declared unsupported or marked as having no scheduling information for a processor. For some backends such as MIPS, this requirement entails long regex lists of instructions that are unsupported. This patch teaches Tablegen to skip over instructions that are associated with unsupported feature when checking if the scheduling model is complete. Patch by: Daniel Sanders Contributions by: Simon Dardis Reviewers: MatzeB Differential Reviewer: http://reviews.llvm.org/D20522 llvm-svn: 273551
Diffstat (limited to 'llvm/utils/TableGen/CodeGenSchedule.h')
-rw-r--r--llvm/utils/TableGen/CodeGenSchedule.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/CodeGenSchedule.h b/llvm/utils/TableGen/CodeGenSchedule.h
index 7a236ad0dd8..755ffd25b0c 100644
--- a/llvm/utils/TableGen/CodeGenSchedule.h
+++ b/llvm/utils/TableGen/CodeGenSchedule.h
@@ -189,6 +189,10 @@ struct CodeGenProcModel {
// This list is empty if no ItinRW refers to this Processor.
RecVec ItinRWDefs;
+ // List of unsupported feature.
+ // This list is empty if the Processor has no UnsupportedFeatures.
+ RecVec UnsupportedFeaturesDefs;
+
// All read/write resources associated with this processor.
RecVec WriteResDefs;
RecVec ReadAdvanceDefs;
@@ -211,6 +215,8 @@ struct CodeGenProcModel {
unsigned getProcResourceIdx(Record *PRDef) const;
+ bool isUnsupported(const CodeGenInstruction &Inst) const;
+
#ifndef NDEBUG
void dump() const;
#endif
@@ -402,6 +408,8 @@ private:
void collectProcItinRW();
+ void collectProcUnsupportedFeatures();
+
void inferSchedClasses();
void checkCompleteness();
OpenPOWER on IntegriCloud