summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2016-03-01 20:03:21 +0000
committerMatthias Braun <matze@braunis.de>2016-03-01 20:03:21 +0000
commit17cb57995eb9535c30cdff864b6157a34d1f5143 (patch)
treeb3f0a74bf54273a3ceba97c71bec0daaa24cdd5f /llvm/lib/Target/X86
parent8e0a734fc5ee45e2dc8926c58b6ed68fd57500ea (diff)
downloadbcm5719-llvm-17cb57995eb9535c30cdff864b6157a34d1f5143.tar.gz
bcm5719-llvm-17cb57995eb9535c30cdff864b6157a34d1f5143.zip
TableGen: Check scheduling models for completeness
TableGen checks at compiletime that for scheduling models with "CompleteModel = 1" one of the following holds: - Is marked with the hasNoSchedulingInfo flag - The instruction is a subclass of Sched - There are InstRW definitions in the scheduling model Typical steps necessary to complete a model: - Ensure all pseudo instructions that are expanded before machine scheduling (usually everything handled with EmitYYY() functions in XXXTargetLowering). - If a CPU does not support some instructions mark the corresponding resource unsupported: "WriteRes<WriteXXX, []> { let Unsupported = 1; }". - Add missing scheduling information. Differential Revision: http://reviews.llvm.org/D17747 llvm-svn: 262384
Diffstat (limited to 'llvm/lib/Target/X86')
-rw-r--r--llvm/lib/Target/X86/X86Schedule.td1
-rw-r--r--llvm/lib/Target/X86/X86ScheduleAtom.td1
2 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86Schedule.td b/llvm/lib/Target/X86/X86Schedule.td
index a261356afe6..46c88c4fcbb 100644
--- a/llvm/lib/Target/X86/X86Schedule.td
+++ b/llvm/lib/Target/X86/X86Schedule.td
@@ -640,6 +640,7 @@ def GenericModel : SchedMachineModel {
let LoadLatency = 4;
let HighLatency = 10;
let PostRAScheduler = 0;
+ let CompleteModel = 0;
}
include "X86ScheduleAtom.td"
diff --git a/llvm/lib/Target/X86/X86ScheduleAtom.td b/llvm/lib/Target/X86/X86ScheduleAtom.td
index 4c559c9c179..a5b440182aa 100644
--- a/llvm/lib/Target/X86/X86ScheduleAtom.td
+++ b/llvm/lib/Target/X86/X86ScheduleAtom.td
@@ -544,6 +544,7 @@ def AtomModel : SchedMachineModel {
// simple loops, expand by a small factor to hide the backedge cost.
let LoopMicroOpBufferSize = 10;
let PostRAScheduler = 1;
+ let CompleteModel = 0;
let Itineraries = AtomItineraries;
}
OpenPOWER on IntegriCloud