blob: d54e20f59a3f6d19420a4904fd701f7ac9050016 [file] [log] [blame]
Evan Cheng8557c2b2009-06-19 01:51:50 +00001//===- ARMSchedule.td - ARM Scheduling Definitions ---------*- tablegen -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10//===----------------------------------------------------------------------===//
11// Functional units across ARM processors
12//
David Goodwin546952f2009-08-11 22:38:43 +000013def FU_Issue : FuncUnit; // issue
14def FU_Pipe0 : FuncUnit; // pipeline 0
15def FU_Pipe1 : FuncUnit; // pipeline 1
David Goodwinbcf81622009-08-10 15:56:13 +000016def FU_LdSt0 : FuncUnit; // pipeline 0 load/store
17def FU_LdSt1 : FuncUnit; // pipeline 1 load/store
Evan Cheng8557c2b2009-06-19 01:51:50 +000018
19//===----------------------------------------------------------------------===//
20// Instruction Itinerary classes used for ARM
21//
22def IIC_iALU : InstrItinClass;
David Goodwin6d3d9c32009-08-13 15:51:13 +000023def IIC_iMPYh : InstrItinClass;
24def IIC_iMPYw : InstrItinClass;
25def IIC_iMPYl : InstrItinClass;
Evan Cheng8557c2b2009-06-19 01:51:50 +000026def IIC_iLoad : InstrItinClass;
27def IIC_iStore : InstrItinClass;
28def IIC_fpALU : InstrItinClass;
David Goodwin546952f2009-08-11 22:38:43 +000029def IIC_fpMPY : InstrItinClass;
Evan Cheng8557c2b2009-06-19 01:51:50 +000030def IIC_fpLoad : InstrItinClass;
31def IIC_fpStore : InstrItinClass;
32def IIC_Br : InstrItinClass;
33
34//===----------------------------------------------------------------------===//
35// Processor instruction itineraries.
36
David Goodwinbcf81622009-08-10 15:56:13 +000037def GenericItineraries : ProcessorItineraries<[
38 InstrItinData<IIC_iALU , [InstrStage<1, [FU_Pipe0]>]>,
David Goodwin6d3d9c32009-08-13 15:51:13 +000039 InstrItinData<IIC_iMPYh , [InstrStage<1, [FU_Pipe0]>]>,
40 InstrItinData<IIC_iMPYw , [InstrStage<1, [FU_Pipe0]>]>,
41 InstrItinData<IIC_iMPYl , [InstrStage<1, [FU_Pipe0]>]>,
Evan Chengbc9b7542009-08-15 07:59:10 +000042 InstrItinData<IIC_iLoad , [InstrStage<1, [FU_Pipe0]>,
43 InstrStage<1, [FU_LdSt0]>]>,
David Goodwinbcf81622009-08-10 15:56:13 +000044 InstrItinData<IIC_iStore , [InstrStage<1, [FU_Pipe0]>]>,
David Goodwin546952f2009-08-11 22:38:43 +000045 InstrItinData<IIC_Br , [InstrStage<1, [FU_Pipe0]>]>,
David Goodwinbcf81622009-08-10 15:56:13 +000046 InstrItinData<IIC_fpALU , [InstrStage<1, [FU_Pipe0]>]>,
David Goodwin546952f2009-08-11 22:38:43 +000047 InstrItinData<IIC_fpMPY , [InstrStage<1, [FU_Pipe0]>]>,
Evan Chengbc9b7542009-08-15 07:59:10 +000048 InstrItinData<IIC_fpLoad , [InstrStage<1, [FU_Pipe0]>,
49 InstrStage<1, [FU_LdSt0]>]>,
David Goodwin546952f2009-08-11 22:38:43 +000050 InstrItinData<IIC_fpStore , [InstrStage<1, [FU_Pipe0]>]>
David Goodwinbcf81622009-08-10 15:56:13 +000051]>;
52
Evan Cheng8557c2b2009-06-19 01:51:50 +000053
54include "ARMScheduleV6.td"
Evan Cheng6762d912009-07-21 18:54:14 +000055include "ARMScheduleV7.td"