xref: /aosp_15_r20/external/llvm/lib/Target/Lanai/LanaiSchedule.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker//=-LanaiSchedule.td - Lanai Scheduling Definitions --*- tablegen -*-=========//
2*9880d681SAndroid Build Coastguard Worker//
3*9880d681SAndroid Build Coastguard Worker//                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker//
5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker//
8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdef ALU_FU  : FuncUnit;
11*9880d681SAndroid Build Coastguard Workerdef LDST_FU : FuncUnit;
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdef IIC_ALU  : InstrItinClass;
14*9880d681SAndroid Build Coastguard Workerdef IIC_LD   : InstrItinClass;
15*9880d681SAndroid Build Coastguard Workerdef IIC_ST   : InstrItinClass;
16*9880d681SAndroid Build Coastguard Workerdef IIC_LDSW : InstrItinClass;
17*9880d681SAndroid Build Coastguard Workerdef IIC_STSW : InstrItinClass;
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdef LanaiItinerary : ProcessorItineraries<[ALU_FU, LDST_FU],[],[
20*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LD,   [InstrStage<1, [LDST_FU]>]>,
21*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_ST,   [InstrStage<1, [LDST_FU]>]>,
22*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LDSW, [InstrStage<2, [LDST_FU]>]>,
23*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_STSW, [InstrStage<2, [LDST_FU]>]>,
24*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_ALU,  [InstrStage<1, [ALU_FU]>]>
25*9880d681SAndroid Build Coastguard Worker]>;
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdef LanaiSchedModel : SchedMachineModel {
28*9880d681SAndroid Build Coastguard Worker  // Cycles for loads to access the cache [default = -1]
29*9880d681SAndroid Build Coastguard Worker  let LoadLatency = 2;
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker  // Max micro-ops that can be buffered for optimized loop dispatch/execution.
32*9880d681SAndroid Build Coastguard Worker  // [default = -1]
33*9880d681SAndroid Build Coastguard Worker  let LoopMicroOpBufferSize = 0;
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker  // Allow scheduler to assign default model to any unrecognized opcodes.
36*9880d681SAndroid Build Coastguard Worker  // [default = 1]
37*9880d681SAndroid Build Coastguard Worker  let CompleteModel = 0;
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker  // Max micro-ops that may be scheduled per cycle. [default = 1]
40*9880d681SAndroid Build Coastguard Worker  let IssueWidth = 1;
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker  // Extra cycles for a mispredicted branch. [default = -1]
43*9880d681SAndroid Build Coastguard Worker  let MispredictPenalty = 10;
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker  // Enable Post RegAlloc Scheduler pass. [default = 0]
46*9880d681SAndroid Build Coastguard Worker  let PostRAScheduler = 0;
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker  // Max micro-ops that can be buffered. [default = -1]
49*9880d681SAndroid Build Coastguard Worker  let MicroOpBufferSize = 0;
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker  // Per-cycle resources tables. [default = NoItineraries]
52*9880d681SAndroid Build Coastguard Worker  let Itineraries = LanaiItinerary;
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdef ALU : ProcResource<1> { let BufferSize = 0; }
56*9880d681SAndroid Build Coastguard Workerdef LdSt : ProcResource<1> { let BufferSize = 0; }
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerdef WriteLD   : SchedWrite;
59*9880d681SAndroid Build Coastguard Workerdef WriteST   : SchedWrite;
60*9880d681SAndroid Build Coastguard Workerdef WriteLDSW : SchedWrite;
61*9880d681SAndroid Build Coastguard Workerdef WriteSTSW : SchedWrite;
62*9880d681SAndroid Build Coastguard Workerdef WriteALU  : SchedWrite;
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerlet SchedModel = LanaiSchedModel in {
65*9880d681SAndroid Build Coastguard Worker  def : WriteRes<WriteLD, [LdSt]>   { let Latency = 2; }
66*9880d681SAndroid Build Coastguard Worker  def : WriteRes<WriteST, [LdSt]>   { let Latency = 2; }
67*9880d681SAndroid Build Coastguard Worker  def : WriteRes<WriteLDSW, [LdSt]> { let Latency = 2; }
68*9880d681SAndroid Build Coastguard Worker  def : WriteRes<WriteSTSW, [LdSt]> { let Latency = 4; }
69*9880d681SAndroid Build Coastguard Worker  def : WriteRes<WriteALU, [ALU]>   { let Latency = 1; }
70*9880d681SAndroid Build Coastguard Worker}
71