HexagonSchedule.td revision fc992996f751e0941951b6d08d8f1e80ebec1385
1//===- HexagonSchedule.td - Hexagon 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// Functional Units
11def LUNIT     : FuncUnit;
12def LSUNIT    : FuncUnit;
13def MUNIT     : FuncUnit;
14def SUNIT     : FuncUnit;
15
16// Itinerary classes
17def ALU32     : InstrItinClass;
18def ALU64     : InstrItinClass;
19def CR        : InstrItinClass;
20def J         : InstrItinClass;
21def JR        : InstrItinClass;
22def LD        : InstrItinClass;
23def M         : InstrItinClass;
24def ST        : InstrItinClass;
25def S         : InstrItinClass;
26def SYS       : InstrItinClass;
27def MARKER    : InstrItinClass;
28def PSEUDO    : InstrItinClass;
29
30def HexagonItineraries :
31      ProcessorItineraries<[LUNIT, LSUNIT, MUNIT, SUNIT], [], [
32        InstrItinData<ALU32  , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]>,
33        InstrItinData<ALU64  , [InstrStage<1, [MUNIT, SUNIT]>]>,
34        InstrItinData<CR     , [InstrStage<1, [SUNIT]>]>,
35        InstrItinData<J      , [InstrStage<1, [SUNIT, MUNIT]>]>,
36        InstrItinData<JR     , [InstrStage<1, [MUNIT]>]>,
37        InstrItinData<LD     , [InstrStage<1, [LUNIT, LSUNIT]>]>,
38        InstrItinData<M      , [InstrStage<1, [MUNIT, SUNIT]>]>,
39        InstrItinData<ST     , [InstrStage<1, [LSUNIT]>]>,
40        InstrItinData<S      , [InstrStage<1, [SUNIT, MUNIT]>]>,
41        InstrItinData<SYS    , [InstrStage<1, [LSUNIT]>]>,
42        InstrItinData<MARKER , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]>,
43        InstrItinData<PSEUDO , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]>
44      ]> {
45  // Max issue per cycle == bundle width.
46  let IssueWidth = 4;
47}
48
49//===----------------------------------------------------------------------===//
50// V4 Machine Info +
51//===----------------------------------------------------------------------===//
52
53include "HexagonScheduleV4.td"
54
55//===----------------------------------------------------------------------===//
56// V4 Machine Info -
57//===----------------------------------------------------------------------===//
58