xref: /freebsd/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSchedule.td (revision e9e8876a4d6afc1ad5315faaa191b25121a813d7)
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.
131
132include "PPCScheduleG3.td"
133include "PPCSchedule440.td"
134include "PPCScheduleG4.td"
135include "PPCScheduleG4Plus.td"
136include "PPCScheduleG5.td"
137include "PPCScheduleP7.td"
138include "PPCScheduleP8.td"
139include "PPCScheduleP9.td"
140include "PPCScheduleA2.td"
141include "PPCScheduleE500.td"
142include "PPCScheduleE500mc.td"
143include "PPCScheduleE5500.td"
144