summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMSchedule.td
diff options
context:
space:
mode:
authorDavid Goodwin <david_goodwin@apple.com>2009-08-11 22:38:43 +0000
committerDavid Goodwin <david_goodwin@apple.com>2009-08-11 22:38:43 +0000
commit546952fd600ddba3f1eb6d4f93ff4eb42821a962 (patch)
tree7b06ab7ec67d14a1bab1d9a63a36c71cb7d6cae7 /lib/Target/ARM/ARMSchedule.td
parente28a2e8b70e926324575ddec0a1565c6dba7d404 (diff)
downloadllvm-546952fd600ddba3f1eb6d4f93ff4eb42821a962.tar.gz
llvm-546952fd600ddba3f1eb6d4f93ff4eb42821a962.tar.bz2
llvm-546952fd600ddba3f1eb6d4f93ff4eb42821a962.tar.xz
Allow a zero cycle stage to reserve/require a FU without advancing the cycle counter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78736 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMSchedule.td')
-rw-r--r--lib/Target/ARM/ARMSchedule.td15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/Target/ARM/ARMSchedule.td b/lib/Target/ARM/ARMSchedule.td
index a5ca773ef1..11a7b2a717 100644
--- a/lib/Target/ARM/ARMSchedule.td
+++ b/lib/Target/ARM/ARMSchedule.td
@@ -10,8 +10,9 @@
//===----------------------------------------------------------------------===//
// Functional units across ARM processors
//
-def FU_Pipe0 : FuncUnit; // pipeline 0 issue
-def FU_Pipe1 : FuncUnit; // pipeline 1 issue
+def FU_Issue : FuncUnit; // issue
+def FU_Pipe0 : FuncUnit; // pipeline 0
+def FU_Pipe1 : FuncUnit; // pipeline 1
def FU_LdSt0 : FuncUnit; // pipeline 0 load/store
def FU_LdSt1 : FuncUnit; // pipeline 1 load/store
@@ -19,9 +20,11 @@ def FU_LdSt1 : FuncUnit; // pipeline 1 load/store
// Instruction Itinerary classes used for ARM
//
def IIC_iALU : InstrItinClass;
+def IIC_iMPY : InstrItinClass;
def IIC_iLoad : InstrItinClass;
def IIC_iStore : InstrItinClass;
def IIC_fpALU : InstrItinClass;
+def IIC_fpMPY : InstrItinClass;
def IIC_fpLoad : InstrItinClass;
def IIC_fpStore : InstrItinClass;
def IIC_Br : InstrItinClass;
@@ -31,12 +34,14 @@ def IIC_Br : InstrItinClass;
def GenericItineraries : ProcessorItineraries<[
InstrItinData<IIC_iALU , [InstrStage<1, [FU_Pipe0]>]>,
+ InstrItinData<IIC_iMPY , [InstrStage<1, [FU_Pipe0]>]>,
InstrItinData<IIC_iLoad , [InstrStage<1, [FU_Pipe0]>, InstrStage<1, [FU_LdSt0]>]>,
- InstrItinData<IIC_fpLoad , [InstrStage<1, [FU_Pipe0]>, InstrStage<1, [FU_LdSt0]>]>,
InstrItinData<IIC_iStore , [InstrStage<1, [FU_Pipe0]>]>,
- InstrItinData<IIC_fpStore , [InstrStage<1, [FU_Pipe0]>]>,
+ InstrItinData<IIC_Br , [InstrStage<1, [FU_Pipe0]>]>,
InstrItinData<IIC_fpALU , [InstrStage<1, [FU_Pipe0]>]>,
- InstrItinData<IIC_Br , [InstrStage<1, [FU_Pipe0]>]>
+ InstrItinData<IIC_fpMPY , [InstrStage<1, [FU_Pipe0]>]>,
+ InstrItinData<IIC_fpLoad , [InstrStage<1, [FU_Pipe0]>, InstrStage<1, [FU_LdSt0]>]>,
+ InstrItinData<IIC_fpStore , [InstrStage<1, [FU_Pipe0]>]>
]>;