aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/X86Schedule.td
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2012-07-07 04:00:00 +0000
committerAndrew Trick <atrick@apple.com>2012-07-07 04:00:00 +0000
commit2661b411ccc81b1fe19194d3f43b2630cbef3f28 (patch)
tree0decaebaee6c3a1a9d42df6b5619de1ffb2fac7d /lib/Target/X86/X86Schedule.td
parent06495cd7f2a91c4f659eac5e55b1c08b014d0a08 (diff)
downloadexternal_llvm-2661b411ccc81b1fe19194d3f43b2630cbef3f28.zip
external_llvm-2661b411ccc81b1fe19194d3f43b2630cbef3f28.tar.gz
external_llvm-2661b411ccc81b1fe19194d3f43b2630cbef3f28.tar.bz2
I'm introducing a new machine model to simultaneously allow simple
subtarget CPU descriptions and support new features of MachineScheduler. MachineModel has three categories of data: 1) Basic properties for coarse grained instruction cost model. 2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD). 3) Instruction itineraties for detailed per-cycle reservation tables. These will all live side-by-side. Any subtarget can use any combination of them. Instruction itineraries will not change in the near term. In the long run, I expect them to only be relevant for in-order VLIW machines that have complex contraints and require a precise scheduling/bundling model. Once itineraries are only actively used by VLIW-ish targets, they could be replaced by something more appropriate for those targets. This tablegen backend rewrite sets things up for introducing MachineModel type #2: per opcode/operand cost model. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159891 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86Schedule.td')
-rw-r--r--lib/Target/X86/X86Schedule.td16
1 files changed, 7 insertions, 9 deletions
diff --git a/lib/Target/X86/X86Schedule.td b/lib/Target/X86/X86Schedule.td
index 4331cf3..c14407f 100644
--- a/lib/Target/X86/X86Schedule.td
+++ b/lib/Target/X86/X86Schedule.td
@@ -470,14 +470,12 @@ def IIC_NOP : InstrItinClass;
// latencies. Since these latencies are not used for pipeline hazards,
// they do not need to be exact.
//
-// This set of instruction itineraries should contain no reference to
-// InstrStages. When an iterary has no stages, the scheduler can
-// bypass the logic needed for checking pipeline stage hazards.
-def GenericItineraries : MultiIssueItineraries<
- 4, // IssueWidth
- 0, // MinLatency
- 4, // LoadLatency (expected, may be overriden by OperandCycles)
- 10, // HighLatency (expected, may be overriden by OperandCycles)
- [], [], []>; // no FuncUnits, Bypasses, or InstrItinData.
+// The GenericModel contains no instruciton itineraries.
+def GenericModel : SchedMachineModel {
+ let IssueWidth = 4;
+ let MinLatency = 0;
+ let LoadLatency = 4;
+ let HighLatency = 10;
+}
include "X86ScheduleAtom.td"