]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/Hexagon/HexagonScheduleV4.td
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r302418, and update
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / Hexagon / HexagonScheduleV4.td
1 //=-HexagonScheduleV4.td - HexagonV4 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 LD_tc_ld_SLOT01 : InstrItinClass;
11 def ST_tc_st_SLOT01 : InstrItinClass;
12
13 class HexagonV4PseudoItin {
14   list<InstrItinData> V4PseudoItin_list = [
15     InstrItinData<PSEUDO,     [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
16     InstrItinData<PSEUDOM,    [InstrStage<1, [SLOT2, SLOT3], 0>,
17                                InstrStage<1, [SLOT2, SLOT3]>]>,
18     InstrItinData<DUPLEX,     [InstrStage<1, [SLOT0]>]>,
19     InstrItinData<tc_ENDLOOP, [InstrStage<1, [SLOT_ENDLOOP]>]>
20   ];
21 }
22
23 def HexagonV4ItinList : DepScalarItinV4, HexagonV4PseudoItin {
24   list<InstrItinData> V4Itin_list = [
25     InstrItinData<LD_tc_ld_SLOT01, [InstrStage<1, [SLOT0, SLOT1]>]>,
26     InstrItinData<ST_tc_st_SLOT01, [InstrStage<1, [SLOT0, SLOT1]>]>
27   ];
28   list<InstrItinData> ItinList =
29     !listconcat(V4Itin_list, DepScalarItinV4_list, V4PseudoItin_list);
30 }
31
32 def HexagonItinerariesV4 :
33       ProcessorItineraries<[SLOT0, SLOT1, SLOT2, SLOT3, SLOT_ENDLOOP],
34                            [Hex_FWD], HexagonV4ItinList.ItinList>;
35
36 def HexagonModelV4 : SchedMachineModel {
37   // Max issue per cycle == bundle width.
38   let IssueWidth = 4;
39   let Itineraries = HexagonItinerariesV4;
40   let LoadLatency = 1;
41   let CompleteModel = 0;
42 }
43
44 //===----------------------------------------------------------------------===//
45 // Hexagon V4 Resource Definitions -
46 //===----------------------------------------------------------------------===//