1185029Spjd//===-- PPCSchedule.td - PowerPC Scheduling Definitions ----*- tablegen -*-===//
2185029Spjd//
3185029Spjd// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4185029Spjd// See https://llvm.org/LICENSE.txt for license information.
5185029Spjd// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6185029Spjd//
7185029Spjd//===----------------------------------------------------------------------===//
8185029Spjd
9185029Spjd//===----------------------------------------------------------------------===//
10185029Spjd// Instruction Itinerary classes used for PowerPC
11185029Spjd//
12185029Spjddef IIC_IntSimple    : InstrItinClass;
13185029Spjddef IIC_IntGeneral   : InstrItinClass;
14185029Spjddef IIC_IntCompare   : InstrItinClass;
15185029Spjddef IIC_IntISEL      : InstrItinClass;
16185029Spjddef IIC_IntDivD      : InstrItinClass;
17185029Spjddef IIC_IntDivW      : InstrItinClass;
18185029Spjddef IIC_IntMFFS      : InstrItinClass;
19185029Spjddef IIC_IntMFVSCR    : InstrItinClass;
20185029Spjddef IIC_IntMTFSB0    : InstrItinClass;
21185029Spjddef IIC_IntMTSRD     : InstrItinClass;
22185029Spjddef IIC_IntMulHD     : InstrItinClass;
23185029Spjddef IIC_IntMulHW     : InstrItinClass;
24185029Spjddef IIC_IntMulHWU    : InstrItinClass;
25185029Spjddef IIC_IntMulLI     : InstrItinClass;
26185029Spjddef IIC_IntRFID      : InstrItinClass;
27185029Spjddef IIC_IntRotateD   : InstrItinClass;
28185029Spjddef IIC_IntRotateDI  : InstrItinClass;
29185029Spjddef IIC_IntRotate    : InstrItinClass;
30185029Spjddef IIC_IntShift     : InstrItinClass;
31185029Spjddef IIC_IntTrapD     : InstrItinClass;
32185029Spjddef IIC_IntTrapW     : InstrItinClass;
33185029Spjddef IIC_BrB          : InstrItinClass;
34185029Spjddef IIC_BrCR         : InstrItinClass;
35185029Spjddef IIC_BrMCR        : InstrItinClass;
36185029Spjddef IIC_BrMCRX       : InstrItinClass;
37185029Spjddef IIC_LdStDCBA     : InstrItinClass;
38185029Spjddef IIC_LdStDCBF     : InstrItinClass;
39185029Spjddef IIC_LdStDCBI     : InstrItinClass;
40185029Spjddef IIC_LdStLoad     : InstrItinClass;
41185029Spjddef IIC_LdStLoadUpd  : InstrItinClass;
42185029Spjddef IIC_LdStLoadUpdX : InstrItinClass;
43185029Spjddef IIC_LdStStore    : InstrItinClass;
44185029Spjddef IIC_LdStDSS      : InstrItinClass;
45185029Spjddef IIC_LdStICBI     : InstrItinClass;
46185029Spjddef IIC_LdStLD       : InstrItinClass;
47185029Spjddef IIC_LdStLDU      : InstrItinClass;
48185029Spjddef IIC_LdStLDUX     : InstrItinClass;
49185029Spjddef IIC_LdStLDARX    : InstrItinClass;
50185029Spjddef IIC_LdStLFD      : InstrItinClass;
51185029Spjddef IIC_LdStLFDU     : InstrItinClass;
52185029Spjddef IIC_LdStLFDUX    : InstrItinClass;
53185029Spjddef IIC_LdStLHA      : InstrItinClass;
54185029Spjddef IIC_LdStLHAU     : InstrItinClass;
55185029Spjddef IIC_LdStLHAUX    : InstrItinClass;
56185029Spjddef IIC_LdStLMW      : InstrItinClass;
57185029Spjddef IIC_LdStLVecX    : InstrItinClass;
58185029Spjddef IIC_LdStLWA      : InstrItinClass;
59185029Spjddef IIC_LdStLWARX    : InstrItinClass;
60185029Spjddef IIC_LdStSLBIA    : InstrItinClass;
61185029Spjddef IIC_LdStSLBIE    : InstrItinClass;
62185029Spjddef IIC_LdStSTD      : InstrItinClass;
63185029Spjddef IIC_LdStSTDCX    : InstrItinClass;
64185029Spjddef IIC_LdStSTU      : InstrItinClass;
65185029Spjddef IIC_LdStSTUX     : InstrItinClass;
66185029Spjddef IIC_LdStSTFD     : InstrItinClass;
67185029Spjddef IIC_LdStSTFDU    : InstrItinClass;
68185029Spjddef IIC_LdStSTVEBX   : InstrItinClass;
69185029Spjddef IIC_LdStSTWCX    : InstrItinClass;
70185029Spjddef IIC_LdStSync     : InstrItinClass;
71185029Spjddef IIC_LdStCOPY     : InstrItinClass;
72185029Spjddef IIC_LdStPASTE    : InstrItinClass;
73185029Spjddef IIC_SprISYNC     : InstrItinClass;
74185029Spjddef IIC_SprMFSR      : InstrItinClass;
75185029Spjddef IIC_SprMTMSR     : InstrItinClass;
76185029Spjddef IIC_SprMTSR      : InstrItinClass;
77185029Spjddef IIC_SprTLBSYNC   : InstrItinClass;
78185029Spjddef IIC_SprMFCR      : InstrItinClass;
79185029Spjddef IIC_SprMFCRF     : InstrItinClass;
80185029Spjddef IIC_SprMFMSR     : InstrItinClass;
81185029Spjddef IIC_SprMFSPR     : InstrItinClass;
82185029Spjddef IIC_SprMFTB      : InstrItinClass;
83185029Spjddef IIC_SprMTSPR     : InstrItinClass;
84185029Spjddef IIC_SprMTSRIN    : InstrItinClass;
85185029Spjddef IIC_SprRFI       : InstrItinClass;
86185029Spjddef IIC_SprSC        : InstrItinClass;
87185029Spjddef IIC_FPGeneral    : InstrItinClass;
88185029Spjddef IIC_FPDGeneral   : InstrItinClass;
89185029Spjddef IIC_FPSGeneral   : InstrItinClass;
90185029Spjddef IIC_FPAddSub     : InstrItinClass;
91185029Spjddef IIC_FPCompare    : InstrItinClass;
92185029Spjddef IIC_FPDivD       : InstrItinClass;
93185029Spjddef IIC_FPDivS       : InstrItinClass;
94185029Spjddef IIC_FPFused      : InstrItinClass;
95185029Spjddef IIC_FPRes        : InstrItinClass;
96185029Spjddef IIC_FPSqrtD      : InstrItinClass;
97185029Spjddef IIC_FPSqrtS      : InstrItinClass;
98185029Spjddef IIC_VecGeneral   : InstrItinClass;
99185029Spjddef IIC_VecFP        : InstrItinClass;
100185029Spjddef IIC_VecFPCompare : InstrItinClass;
101185029Spjddef IIC_VecComplex   : InstrItinClass;
102185029Spjddef IIC_VecPerm      : InstrItinClass;
103185029Spjddef IIC_VecFPRound   : InstrItinClass;
104185029Spjddef IIC_VecVSL       : InstrItinClass;
105185029Spjddef IIC_VecVSR       : InstrItinClass;
106185029Spjddef IIC_SprMTMSRD    : InstrItinClass;
107185029Spjddef IIC_SprSLIE      : InstrItinClass;
108185029Spjddef 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