blob: c2cfbb9710a68e1fe983dd8faf779a28c4d7c98c [file] [log] [blame]
Jia Liu31d157a2012-02-18 12:03:15 +00001//===- HexagonSchedule.td - Hexagon Scheduling Definitions -*- tablegen -*-===//
Tony Linthicumb4b54152011-12-12 21:14:40 +00002//
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// Functional Units
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000011def LSUNIT : FuncUnit; // SLOT0
12def LUNIT : FuncUnit; // SLOT1
13def MUNIT : FuncUnit; // SLOT2
14def SUNIT : FuncUnit; // SLOT3
15def LOOPUNIT : FuncUnit;
Tony Linthicumb4b54152011-12-12 21:14:40 +000016
Tony Linthicumb4b54152011-12-12 21:14:40 +000017// Itinerary classes
18def ALU32 : InstrItinClass;
19def ALU64 : InstrItinClass;
20def CR : InstrItinClass;
21def J : InstrItinClass;
22def JR : InstrItinClass;
23def LD : InstrItinClass;
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000024def LD0 : InstrItinClass;
Tony Linthicumb4b54152011-12-12 21:14:40 +000025def M : InstrItinClass;
26def ST : InstrItinClass;
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000027def ST0 : InstrItinClass;
Tony Linthicumb4b54152011-12-12 21:14:40 +000028def S : InstrItinClass;
Sirish Pande71d56462012-05-03 16:18:50 +000029def SYS : InstrItinClass;
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000030def ENDLOOP : InstrItinClass;
Tony Linthicumb4b54152011-12-12 21:14:40 +000031def PSEUDO : InstrItinClass;
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000032def PSEUDOM : InstrItinClass;
Tony Linthicumb4b54152011-12-12 21:14:40 +000033
Tony Linthicumb4b54152011-12-12 21:14:40 +000034def HexagonItineraries :
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000035 ProcessorItineraries<[LSUNIT, LUNIT, MUNIT, SUNIT, LOOPUNIT], [], [
Sirish Pande71d56462012-05-03 16:18:50 +000036 InstrItinData<ALU32 , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]>,
37 InstrItinData<ALU64 , [InstrStage<1, [MUNIT, SUNIT]>]>,
38 InstrItinData<CR , [InstrStage<1, [SUNIT]>]>,
39 InstrItinData<J , [InstrStage<1, [SUNIT, MUNIT]>]>,
40 InstrItinData<JR , [InstrStage<1, [MUNIT]>]>,
41 InstrItinData<LD , [InstrStage<1, [LUNIT, LSUNIT]>]>,
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000042 InstrItinData<LD0 , [InstrStage<1, [LSUNIT]>]>,
Sirish Pande71d56462012-05-03 16:18:50 +000043 InstrItinData<M , [InstrStage<1, [MUNIT, SUNIT]>]>,
44 InstrItinData<ST , [InstrStage<1, [LSUNIT]>]>,
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000045 InstrItinData<ST0 , [InstrStage<1, [LSUNIT]>]>,
Sirish Pande71d56462012-05-03 16:18:50 +000046 InstrItinData<S , [InstrStage<1, [SUNIT, MUNIT]>]>,
47 InstrItinData<SYS , [InstrStage<1, [LSUNIT]>]>,
Jyotsna Verma84a2c2b2013-02-14 19:57:17 +000048 InstrItinData<ENDLOOP, [InstrStage<1, [LOOPUNIT]>]>,
49 InstrItinData<PSEUDO , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]>,
50 InstrItinData<PSEUDOM, [InstrStage<1, [MUNIT, SUNIT], 0>,
51 InstrStage<1, [MUNIT, SUNIT]>]>
Andrew Trick2661b412012-07-07 04:00:00 +000052 ]>;
53
54def HexagonModel : SchedMachineModel {
Andrew Trickfc992992012-06-05 03:44:40 +000055 // Max issue per cycle == bundle width.
56 let IssueWidth = 4;
Andrew Trick2661b412012-07-07 04:00:00 +000057 let Itineraries = HexagonItineraries;
Sergei Larin3e590402012-09-04 14:49:56 +000058 let LoadLatency = 1;
Andrew Trickfc992992012-06-05 03:44:40 +000059}
Tony Linthicumb4b54152011-12-12 21:14:40 +000060
61//===----------------------------------------------------------------------===//
62// V4 Machine Info +
63//===----------------------------------------------------------------------===//
64
65include "HexagonScheduleV4.td"
66
67//===----------------------------------------------------------------------===//
68// V4 Machine Info -
69//===----------------------------------------------------------------------===//