1 //===- AArch64Schedule.td - AArch64 Scheduling Definitions -*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
11 // Generic processor itineraries for legacy compatibility.
13 def GenericItineraries : ProcessorItineraries<[], [], []>;
16 //===----------------------------------------------------------------------===//
17 // Base SchedReadWrite types
20 def WriteALU : SchedWrite; // Generic: may contain shift and/or ALU operation
21 def WriteALUs : SchedWrite; // Shift only with no ALU operation
22 def ReadALU : SchedRead; // Operand not needed for shifting
23 def ReadALUs : SchedRead; // Operand needed for shifting
25 // Multiply with optional accumulate
26 def WriteMAC : SchedWrite;
27 def ReadMAC : SchedRead;
30 def WriteCMP : SchedWrite;
31 def ReadCMP : SchedRead;
34 def WriteDiv : SchedWrite;
35 def ReadDiv : SchedRead;
38 def WriteLd : SchedWrite;
39 def WritePreLd : SchedWrite;
40 def WriteVecLd : SchedWrite;
41 def ReadLd : SchedRead;
42 def ReadPreLd : SchedRead;
43 def ReadVecLd : SchedRead;
46 def WriteSt : SchedWrite;
47 def WriteVecSt : SchedWrite;
48 def ReadSt : SchedRead;
49 def ReadVecSt : SchedRead;
52 def WriteBr : SchedWrite;
53 def WriteBrL : SchedWrite;
54 def ReadBr : SchedRead;
57 def WriteFPALU : SchedWrite;
58 def ReadFPALU : SchedRead;
60 // Floating Point MAC, Mul, Div, Sqrt
61 // Most processors will simply send all of these down a dedicated pipe, but
62 // they're explicitly separated here for flexibility of modeling later. May
63 // consider consolidating them into a single WriteFPXXXX type in the future.
64 def WriteFPMAC : SchedWrite;
65 def WriteFPMul : SchedWrite;
66 def WriteFPDiv : SchedWrite;
67 def WriteFPSqrt : SchedWrite;
68 def ReadFPMAC : SchedRead;
69 def ReadFPMul : SchedRead;
70 def ReadFPDiv : SchedRead;
71 def ReadFPSqrt : SchedRead;
74 def WriteNoop : SchedWrite;
77 //===----------------------------------------------------------------------===//
78 // Subtarget specific Machine Models.
80 include "AArch64ScheduleA53.td"