[AMDGPU] Check for immediate SrcC in mfma in AsmParser
[llvm-core.git] / lib / Target / Hexagon / HexagonSchedule.td
blob0834e90004606629ab04f94e457b73556db2d4a7
1 //===- HexagonSchedule.td - Hexagon Scheduling Definitions -*- tablegen -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 def Hex_FWD : Bypass;
10 def HVX_FWD : Bypass;
12 // Functional Units.
13 def SLOT0       : FuncUnit;
14 def SLOT1       : FuncUnit;
15 def SLOT2       : FuncUnit;
16 def SLOT3       : FuncUnit;
17 // Endloop is a pseudo instruction that is encoded with 2 bits in a packet
18 // rather than taking an execution slot. This special unit is needed
19 // to schedule an ENDLOOP with 4 other instructions.
20 def SLOT_ENDLOOP: FuncUnit;
22 // CVI pipes from the "Hexagon Multimedia Co-Processor Extensions Arch Spec".
23 def CVI_ST     : FuncUnit;
24 def CVI_XLANE  : FuncUnit;
25 def CVI_SHIFT  : FuncUnit;
26 def CVI_MPY0   : FuncUnit;
27 def CVI_MPY1   : FuncUnit;
28 def CVI_LD     : FuncUnit;
29 def CVI_ZW     : FuncUnit; // Z register write port
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;
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     ]>;
47 // Itinerary classes.
48 def PSEUDO          : InstrItinClass;
49 def PSEUDOM         : InstrItinClass;
50 def DUPLEX          : InstrItinClass;
51 def tc_ENDLOOP      : InstrItinClass;
53 //===----------------------------------------------------------------------===//
54 // Auto-generated itinerary classes
55 //===----------------------------------------------------------------------===//
56 include "HexagonDepIICScalar.td"
57 include "HexagonDepIICHVX.td"
59 //===----------------------------------------------------------------------===//
60 // V5 Machine Info +
61 //===----------------------------------------------------------------------===//
63 include "HexagonScheduleV5.td"
65 // V55 Machine Info +
66 include "HexagonScheduleV55.td"
68 //===----------------------------------------------------------------------===//
69 // V60 Machine Info -
70 //===----------------------------------------------------------------------===//
72 include "HexagonIICScalar.td"
73 include "HexagonIICHVX.td"
74 include "HexagonScheduleV60.td"
76 //===----------------------------------------------------------------------===//
77 // V62 Machine Info +
78 //===----------------------------------------------------------------------===//
80 include "HexagonScheduleV62.td"
82 //===----------------------------------------------------------------------===//
83 // V65 Machine Info +
84 //===----------------------------------------------------------------------===//
86 include "HexagonScheduleV65.td"
88 //===----------------------------------------------------------------------===//
89 // V66 Machine Info +
90 //===----------------------------------------------------------------------===//
92 include "HexagonScheduleV66.td"