]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/Hexagon/HexagonSchedule.td
MFV r322227: 8377 Panic in bookmark deletion
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / Hexagon / HexagonSchedule.td
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 def Hex_FWD : Bypass;
11 def HVX_FWD : Bypass;
12
13 // Functional Units.
14 def SLOT0       : FuncUnit;
15 def SLOT1       : FuncUnit;
16 def SLOT2       : FuncUnit;
17 def 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.
21 def SLOT_ENDLOOP: FuncUnit;
22
23 // CVI pipes from the "Hexagon Multimedia Co-Processor Extensions Arch Spec".
24 def CVI_ST     : FuncUnit;
25 def CVI_XLANE  : FuncUnit;
26 def CVI_SHIFT  : FuncUnit;
27 def CVI_MPY0   : FuncUnit;
28 def CVI_MPY1   : FuncUnit;
29 def CVI_LD     : FuncUnit;
30
31 // Combined functional units.
32 def CVI_XLSHF  : FuncUnit;
33 def CVI_MPY01  : FuncUnit;
34 def CVI_ALL    : FuncUnit;
35 def CVI_ALL_NOMEM : FuncUnit;
36
37 // Combined functional unit data.
38 def 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.
48 def PSEUDO          : InstrItinClass;
49 def PSEUDOM         : InstrItinClass;
50 def DUPLEX          : InstrItinClass;
51 def tc_ENDLOOP      : InstrItinClass;
52
53 //===----------------------------------------------------------------------===//
54 // Auto-generated itinerary classes
55 //===----------------------------------------------------------------------===//
56 include "HexagonDepIICScalar.td"
57 include "HexagonDepIICHVX.td"
58
59 //===----------------------------------------------------------------------===//
60 // V4 Machine Info +
61 //===----------------------------------------------------------------------===//
62
63 include "HexagonScheduleV4.td"
64
65 // V55 Machine Info +
66 include "HexagonScheduleV55.td"
67
68 //===----------------------------------------------------------------------===//
69 // V60 Machine Info -
70 //===----------------------------------------------------------------------===//
71
72 include "HexagonIICScalar.td"
73 include "HexagonIICHVX.td"
74 include "HexagonScheduleV60.td"
75
76 //===----------------------------------------------------------------------===//
77 // V62 Machine Info +
78 //===----------------------------------------------------------------------===//
79
80 include "HexagonScheduleV62.td"
81