diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-09-28 23:50:49 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-09-28 23:50:49 +0000 |
commit | 63d66eed16a6ee4e838f2f7a4c8299def0722c20 (patch) | |
tree | 8f6d45aaa9b70a0694825dabb532e81b91a6622d /include/llvm | |
parent | e48155b25a40e0c1f285ab42b99b2503638d6c0d (diff) | |
download | external_llvm-63d66eed16a6ee4e838f2f7a4c8299def0722c20.zip external_llvm-63d66eed16a6ee4e838f2f7a4c8299def0722c20.tar.gz external_llvm-63d66eed16a6ee4e838f2f7a4c8299def0722c20.tar.bz2 |
Add support to model pipeline bypass / forwarding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115005 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/Target/TargetSchedule.td | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/include/llvm/Target/TargetSchedule.td b/include/llvm/Target/TargetSchedule.td index d771cdd..c55ebd8 100644 --- a/include/llvm/Target/TargetSchedule.td +++ b/include/llvm/Target/TargetSchedule.td @@ -22,6 +22,14 @@ // class FuncUnit; +//===----------------------------------------------------------------------===// +// Pipeline bypass / forwarding - These values specifies the symbolic names of +// pipeline bypasses which can be used to forward results of instructions +// that are forwarded to uses. +class Bypass; + +def NoBypass : Bypass; + class ReservationKind<bits<1> val> { int Value = val; } @@ -81,22 +89,26 @@ def NoItinerary : InstrItinClass; // instruction itinerary class (name) to its itinerary data. // class InstrItinData<InstrItinClass Class, list<InstrStage> stages, - list<int> operandcycles = []> { + list<int> operandcycles = [], + list<Bypass> bypasses = []> { InstrItinClass TheClass = Class; list<InstrStage> Stages = stages; list<int> OperandCycles = operandcycles; + list<Bypass> Bypasses = bypasses; } //===----------------------------------------------------------------------===// // Processor itineraries - These values represent the set of all itinerary // classes for a given chip set. // -class ProcessorItineraries<list<FuncUnit> fu, list<InstrItinData> iid> { +class ProcessorItineraries<list<FuncUnit> fu, list<Bypass> bp, + list<InstrItinData> iid> { list<FuncUnit> FU = fu; + list<Bypass> BP = bp; list<InstrItinData> IID = iid; } // NoItineraries - A marker that can be used by processors without schedule // info. -def NoItineraries : ProcessorItineraries<[], []>; +def NoItineraries : ProcessorItineraries<[], [], []>; |