xref: /freebsd/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSchedule.td (revision 7ab1a32cd43cbae61ad4dd435d6a482bbf61cb52)
1//===-- PPCSchedule.td - PowerPC 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//===----------------------------------------------------------------------===//
8
9//===----------------------------------------------------------------------===//
10// Instruction Itinerary classes used for PowerPC
11//
12def IIC_IntSimple    : InstrItinClass;
13def IIC_IntGeneral   : InstrItinClass;
14def IIC_IntCompare   : InstrItinClass;
15def IIC_IntISEL      : InstrItinClass;
16def IIC_IntDivD      : InstrItinClass;
17def IIC_IntDivW      : InstrItinClass;
18def IIC_IntMFFS      : InstrItinClass;
19def IIC_IntMFVSCR    : InstrItinClass;
20def IIC_IntMTFSB0    : InstrItinClass;
21def IIC_IntMTSRD     : InstrItinClass;
22def IIC_IntMulHD     : InstrItinClass;
23def IIC_IntMulHW     : InstrItinClass;
24def IIC_IntMulHWU    : InstrItinClass;
25def IIC_IntMulLI     : InstrItinClass;
26def IIC_IntRFID      : InstrItinClass;
27def IIC_IntRotateD   : InstrItinClass;
28def IIC_IntRotateDI  : InstrItinClass;
29def IIC_IntRotate    : InstrItinClass;
30def IIC_IntShift     : InstrItinClass;
31def IIC_IntTrapD     : InstrItinClass;
32def IIC_IntTrapW     : InstrItinClass;
33def IIC_BrB          : InstrItinClass;
34def IIC_BrCR         : InstrItinClass;
35def IIC_BrMCR        : InstrItinClass;
36def IIC_BrMCRX       : InstrItinClass;
37def IIC_LdStDCBA     : InstrItinClass;
38def IIC_LdStDCBF     : InstrItinClass;
39def IIC_LdStDCBI     : InstrItinClass;
40def IIC_LdStLoad     : InstrItinClass;
41def IIC_LdStLoadUpd  : InstrItinClass;
42def IIC_LdStLoadUpdX : InstrItinClass;
43def IIC_LdStStore    : InstrItinClass;
44def IIC_LdStDSS      : InstrItinClass;
45def IIC_LdStICBI     : InstrItinClass;
46def IIC_LdStLD       : InstrItinClass;
47def IIC_LdStLDU      : InstrItinClass;
48def IIC_LdStLDUX     : InstrItinClass;
49def IIC_LdStLDARX    : InstrItinClass;
50def IIC_LdStLFD      : InstrItinClass;
51def IIC_LdStLFDU     : InstrItinClass;
52def IIC_LdStLFDUX    : InstrItinClass;
53def IIC_LdStLHA      : InstrItinClass;
54def IIC_LdStLHAU     : InstrItinClass;
55def IIC_LdStLHAUX    : InstrItinClass;
56def IIC_LdStLMW      : InstrItinClass;
57def IIC_LdStLQ       : InstrItinClass;
58def IIC_LdStLQARX    : InstrItinClass;
59def IIC_LdStLVecX    : InstrItinClass;
60def IIC_LdStLWA      : InstrItinClass;
61def IIC_LdStLWARX    : InstrItinClass;
62def IIC_LdStSLBIA    : InstrItinClass;
63def IIC_LdStSLBIE    : InstrItinClass;
64def IIC_LdStSTD      : InstrItinClass;
65def IIC_LdStSTDCX    : InstrItinClass;
66def IIC_LdStSTQ      : InstrItinClass;
67def IIC_LdStSTQCX    : InstrItinClass;
68def IIC_LdStSTU      : InstrItinClass;
69def IIC_LdStSTUX     : InstrItinClass;
70def IIC_LdStSTFD     : InstrItinClass;
71def IIC_LdStSTFDU    : InstrItinClass;
72def IIC_LdStSTVEBX   : InstrItinClass;
73def IIC_LdStSTWCX    : InstrItinClass;
74def IIC_LdStSync     : InstrItinClass;
75def IIC_LdStCOPY     : InstrItinClass;
76def IIC_LdStPASTE    : InstrItinClass;
77def IIC_SprISYNC     : InstrItinClass;
78def IIC_SprMFSR      : InstrItinClass;
79def IIC_SprMTMSR     : InstrItinClass;
80def IIC_SprMTSR      : InstrItinClass;
81def IIC_SprTLBSYNC   : InstrItinClass;
82def IIC_SprMFCR      : InstrItinClass;
83def IIC_SprMFCRF     : InstrItinClass;
84def IIC_SprMFMSR     : InstrItinClass;
85def IIC_SprMFSPR     : InstrItinClass;
86def IIC_SprMFTB      : InstrItinClass;
87def IIC_SprMTSPR     : InstrItinClass;
88def IIC_SprMTSRIN    : InstrItinClass;
89def IIC_SprRFI       : InstrItinClass;
90def IIC_SprSC        : InstrItinClass;
91def IIC_FPGeneral    : InstrItinClass;
92def IIC_FPDGeneral   : InstrItinClass;
93def IIC_FPSGeneral   : InstrItinClass;
94def IIC_FPAddSub     : InstrItinClass;
95def IIC_FPCompare    : InstrItinClass;
96def IIC_FPDivD       : InstrItinClass;
97def IIC_FPDivS       : InstrItinClass;
98def IIC_FPFused      : InstrItinClass;
99def IIC_FPRes        : InstrItinClass;
100def IIC_FPSqrtD      : InstrItinClass;
101def IIC_FPSqrtS      : InstrItinClass;
102def IIC_VecGeneral   : InstrItinClass;
103def IIC_VecFP        : InstrItinClass;
104def IIC_VecFPCompare : InstrItinClass;
105def IIC_VecComplex   : InstrItinClass;
106def IIC_VecPerm      : InstrItinClass;
107def IIC_VecFPRound   : InstrItinClass;
108def IIC_VecVSL       : InstrItinClass;
109def IIC_VecVSR       : InstrItinClass;
110def IIC_SprMTMSRD    : InstrItinClass;
111def IIC_SprSLIE      : InstrItinClass;
112def IIC_SprSLBFEE    : InstrItinClass;
113def IIC_SprSLBIE     : InstrItinClass;
114def IIC_SprSLBIEG    : InstrItinClass;
115def IIC_SprSLBMTE    : InstrItinClass;
116def IIC_SprSLBMFEE   : InstrItinClass;
117def IIC_SprSLBMFEV   : InstrItinClass;
118def IIC_SprSLBIA     : InstrItinClass;
119def IIC_SprSLBSYNC   : InstrItinClass;
120def IIC_SprTLBIA     : InstrItinClass;
121def IIC_SprTLBIEL    : InstrItinClass;
122def IIC_SprTLBIE     : InstrItinClass;
123def IIC_SprABORT     : InstrItinClass;
124def IIC_SprMSGSYNC   : InstrItinClass;
125def IIC_SprSTOP      : InstrItinClass;
126def IIC_SprMFPMR     : InstrItinClass;
127def IIC_SprMTPMR     : InstrItinClass;
128
129//===----------------------------------------------------------------------===//
130// Processor instruction itineraries.
131include "PPCInstrInfo.td"
132
133include "PPCSchedPredicates.td"
134include "PPCScheduleG3.td"
135include "PPCSchedule440.td"
136include "PPCScheduleG4.td"
137include "PPCScheduleG4Plus.td"
138include "PPCScheduleG5.td"
139include "PPCScheduleP7.td"
140include "PPCScheduleP8.td"
141include "PPCScheduleP9.td"
142include "PPCScheduleP10.td"
143include "PPCScheduleA2.td"
144include "PPCScheduleE500.td"
145include "PPCScheduleE500mc.td"
146include "PPCScheduleE5500.td"
147