• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
10def Hex_FWD : Bypass;
11def HVX_FWD : Bypass;
12
13// Functional Units.
14def SLOT0       : FuncUnit;
15def SLOT1       : FuncUnit;
16def SLOT2       : FuncUnit;
17def SLOT3       : FuncUnit;
18// Endloop is a pseudo instruction that is encoded with 2 bits in a packet
19// rather than taking an execution slot. This special unit is needed
20// to schedule an ENDLOOP with 4 other instructions.
21def SLOT_ENDLOOP: FuncUnit;
22
23// CVI pipes from the "Hexagon Multimedia Co-Processor Extensions Arch Spec".
24def CVI_ST     : FuncUnit;
25def CVI_XLANE  : FuncUnit;
26def CVI_SHIFT  : FuncUnit;
27def CVI_MPY0   : FuncUnit;
28def CVI_MPY1   : FuncUnit;
29def CVI_LD     : FuncUnit;
30
31// Combined functional units.
32def CVI_XLSHF  : FuncUnit;
33def CVI_MPY01  : FuncUnit;
34def CVI_ALL    : FuncUnit;
35def CVI_ALL_NOMEM : FuncUnit;
36
37// Combined functional unit data.
38def HexagonComboFuncsV60 :
39    ComboFuncUnits<[
40      ComboFuncData<CVI_XLSHF    , [CVI_XLANE, CVI_SHIFT]>,
41      ComboFuncData<CVI_MPY01    , [CVI_MPY0, CVI_MPY1]>,
42      ComboFuncData<CVI_ALL      , [CVI_ST, CVI_XLANE, CVI_SHIFT,
43                                    CVI_MPY0, CVI_MPY1, CVI_LD]>,
44      ComboFuncData<CVI_ALL_NOMEM, [CVI_XLANE, CVI_SHIFT, CVI_MPY0, CVI_MPY1]>
45    ]>;
46
47// Itinerary classes.
48def PSEUDO          : InstrItinClass;
49def PSEUDOM         : InstrItinClass;
50def DUPLEX          : InstrItinClass;
51def tc_ENDLOOP      : InstrItinClass;
52
53//===----------------------------------------------------------------------===//
54// Auto-generated itinerary classes
55//===----------------------------------------------------------------------===//
56include "HexagonDepIICScalar.td"
57include "HexagonDepIICHVX.td"
58
59//===----------------------------------------------------------------------===//
60// V4 Machine Info +
61//===----------------------------------------------------------------------===//
62
63include "HexagonScheduleV4.td"
64
65// V55 Machine Info +
66include "HexagonScheduleV55.td"
67
68//===----------------------------------------------------------------------===//
69// V60 Machine Info -
70//===----------------------------------------------------------------------===//
71
72include "HexagonIICScalar.td"
73include "HexagonIICHVX.td"
74include "HexagonScheduleV60.td"
75
76//===----------------------------------------------------------------------===//
77// V62 Machine Info +
78//===----------------------------------------------------------------------===//
79
80include "HexagonScheduleV62.td"
81
82//===----------------------------------------------------------------------===//
83// V65 Machine Info +
84//===----------------------------------------------------------------------===//
85
86include "HexagonScheduleV65.td"
87