forked from OSchip/llvm-project
parent
b2680c718f
commit
39a99140c7
|
@ -456,6 +456,28 @@ def IIC_NOP : InstrItinClass;
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Processor instruction itineraries.
|
// Processor instruction itineraries.
|
||||||
|
|
||||||
def GenericItineraries : ProcessorItineraries<[], [], []>;
|
// IssueWidth is analagous to the number of decode units. Core and its
|
||||||
|
// descendents, including Nehalem and SandyBridge have 4 decoders.
|
||||||
|
// Resources beyond the decoder operate on micro-ops and are bufferred
|
||||||
|
// so adjacent micro-ops don't directly compete.
|
||||||
|
//
|
||||||
|
// MinLatency=0 indicates that RAW dependencies can be decoded in the
|
||||||
|
// same cycle.
|
||||||
|
//
|
||||||
|
// HighLatency=10 is optimistic. X86InstrInfo::isHighLatencyDef
|
||||||
|
// indicates high latency opcodes. Alternatively, InstrItinData
|
||||||
|
// entries may be included here to define specific operand
|
||||||
|
// 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.
|
||||||
|
|
||||||
include "X86ScheduleAtom.td"
|
include "X86ScheduleAtom.td"
|
||||||
|
|
|
@ -22,7 +22,12 @@ def Port0 : FuncUnit; // ALU: ALU0, shift/rotate, load/store
|
||||||
def Port1 : FuncUnit; // ALU: ALU1, bit processing, jump, and LEA
|
def Port1 : FuncUnit; // ALU: ALU1, bit processing, jump, and LEA
|
||||||
// SIMD/FP: SIMD ALU, FP Adder
|
// SIMD/FP: SIMD ALU, FP Adder
|
||||||
|
|
||||||
def AtomItineraries : ProcessorItineraries<
|
def AtomItineraries : MultiIssueItineraries<
|
||||||
|
2, // IssueWidth=2 allows 2 instructions per scheduling group.
|
||||||
|
1, // MinLatency=1. InstrStage cycles overrides MinLatency.
|
||||||
|
// OperandCycles may be used for expected latency.
|
||||||
|
3, // LoadLatency (expected, may be overriden by OperandCycles)
|
||||||
|
30,// HighLatency (expected, may be overriden by OperandCycles)
|
||||||
[ Port0, Port1 ],
|
[ Port0, Port1 ],
|
||||||
[], [
|
[], [
|
||||||
// P0 only
|
// P0 only
|
||||||
|
|
Loading…
Reference in New Issue