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_LdStLVecX    : InstrItinClass;
58def IIC_LdStLWA      : InstrItinClass;
59def IIC_LdStLWARX    : InstrItinClass;
60def IIC_LdStSLBIA    : InstrItinClass;
61def IIC_LdStSLBIE    : InstrItinClass;
62def IIC_LdStSTD      : InstrItinClass;
63def IIC_LdStSTDCX    : InstrItinClass;
64def IIC_LdStSTU      : InstrItinClass;
65def IIC_LdStSTUX     : InstrItinClass;
66def IIC_LdStSTFD     : InstrItinClass;
67def IIC_LdStSTFDU    : InstrItinClass;
68def IIC_LdStSTVEBX   : InstrItinClass;
69def IIC_LdStSTWCX    : InstrItinClass;
70def IIC_LdStSync     : InstrItinClass;
71def IIC_LdStCOPY     : InstrItinClass;
72def IIC_LdStPASTE    : InstrItinClass;
73def IIC_SprISYNC     : InstrItinClass;
74def IIC_SprMFSR      : InstrItinClass;
75def IIC_SprMTMSR     : InstrItinClass;
76def IIC_SprMTSR      : InstrItinClass;
77def IIC_SprTLBSYNC   : InstrItinClass;
78def IIC_SprMFCR      : InstrItinClass;
79def IIC_SprMFCRF     : InstrItinClass;
80def IIC_SprMFMSR     : InstrItinClass;
81def IIC_SprMFSPR     : InstrItinClass;
82def IIC_SprMFTB      : InstrItinClass;
83def IIC_SprMTSPR     : InstrItinClass;
84def IIC_SprMTSRIN    : InstrItinClass;
85def IIC_SprRFI       : InstrItinClass;
86def IIC_SprSC        : InstrItinClass;
87def IIC_FPGeneral    : InstrItinClass;
88def IIC_FPDGeneral   : InstrItinClass;
89def IIC_FPSGeneral   : InstrItinClass;
90def IIC_FPAddSub     : InstrItinClass;
91def IIC_FPCompare    : InstrItinClass;
92def IIC_FPDivD       : InstrItinClass;
93def IIC_FPDivS       : InstrItinClass;
94def IIC_FPFused      : InstrItinClass;
95def IIC_FPRes        : InstrItinClass;
96def IIC_FPSqrtD      : InstrItinClass;
97def IIC_FPSqrtS      : InstrItinClass;
98def IIC_VecGeneral   : InstrItinClass;
99def IIC_VecFP        : InstrItinClass;
100def IIC_VecFPCompare : InstrItinClass;
101def IIC_VecComplex   : InstrItinClass;
102def IIC_VecPerm      : InstrItinClass;
103def IIC_VecFPRound   : InstrItinClass;
104def IIC_VecVSL       : InstrItinClass;
105def IIC_VecVSR       : InstrItinClass;
106def IIC_SprMTMSRD    : InstrItinClass;
107def IIC_SprSLIE      : InstrItinClass;
108def IIC_SprSLBFEE    : InstrItinClass;
109def IIC_SprSLBIE     : InstrItinClass;
110def IIC_SprSLBIEG    : InstrItinClass;
111def IIC_SprSLBMTE    : InstrItinClass;
112def IIC_SprSLBMFEE   : InstrItinClass;
113def IIC_SprSLBMFEV   : InstrItinClass;
114def IIC_SprSLBIA     : InstrItinClass;
115def IIC_SprSLBSYNC   : InstrItinClass;
116def IIC_SprTLBIA     : InstrItinClass;
117def IIC_SprTLBIEL    : InstrItinClass;
118def IIC_SprTLBIE     : InstrItinClass;
119def IIC_SprABORT     : InstrItinClass;
120def IIC_SprMSGSYNC   : InstrItinClass;
121def IIC_SprSTOP      : InstrItinClass;
122def IIC_SprMFPMR     : InstrItinClass;
123def IIC_SprMTPMR     : InstrItinClass;
124
125//===----------------------------------------------------------------------===//
126// Processor instruction itineraries.
127
128include "PPCScheduleG3.td"
129include "PPCSchedule440.td"
130include "PPCScheduleG4.td"
131include "PPCScheduleG4Plus.td"
132include "PPCScheduleG5.td"
133include "PPCScheduleP7.td"
134include "PPCScheduleP8.td"
135include "PPCScheduleP9.td"
136include "PPCScheduleA2.td"
137include "PPCScheduleE500.td"
138include "PPCScheduleE500mc.td"
139include "PPCScheduleE5500.td"
140