1234353Sdim//===-- MipsSchedule.td - Mips Scheduling Definitions ------*- tablegen -*-===//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed
10193323Sed//===----------------------------------------------------------------------===//
11193323Sed// Functional units across Mips chips sets. Based on GCC/Mips backend files.
12193323Sed//===----------------------------------------------------------------------===//
13193323Seddef ALU     : FuncUnit;
14193323Seddef IMULDIV : FuncUnit;
15193323Sed
16193323Sed//===----------------------------------------------------------------------===//
17221345Sdim// Instruction Itinerary classes used for Mips
18193323Sed//===----------------------------------------------------------------------===//
19193323Seddef IIAlu              : InstrItinClass;
20263508Sdimdef IIArith            : InstrItinClass;
21263508Sdimdef IILogic            : InstrItinClass;
22193323Seddef IILoad             : InstrItinClass;
23193323Seddef IIStore            : InstrItinClass;
24193323Seddef IIXfer             : InstrItinClass;
25193323Seddef IIBranch           : InstrItinClass;
26193323Seddef IIHiLo             : InstrItinClass;
27193323Seddef IIImul             : InstrItinClass;
28263508Sdimdef IIImult            : InstrItinClass;
29193323Seddef IIIdiv             : InstrItinClass;
30263508Sdimdef IIseb              : InstrItinClass;
31263508Sdimdef IIslt              : InstrItinClass;
32193323Seddef IIFcvt             : InstrItinClass;
33193323Seddef IIFmove            : InstrItinClass;
34193323Seddef IIFcmp             : InstrItinClass;
35193323Seddef IIFadd             : InstrItinClass;
36193323Seddef IIFmulSingle       : InstrItinClass;
37193323Seddef IIFmulDouble       : InstrItinClass;
38193323Seddef IIFdivSingle       : InstrItinClass;
39193323Seddef IIFdivDouble       : InstrItinClass;
40193323Seddef IIFsqrtSingle      : InstrItinClass;
41193323Seddef IIFsqrtDouble      : InstrItinClass;
42193323Seddef IIFrecipFsqrtStep  : InstrItinClass;
43263508Sdimdef IIFLoad            : InstrItinClass;
44263508Sdimdef IIFStore           : InstrItinClass;
45263508Sdimdef IIFmoveC1          : InstrItinClass;
46193323Seddef IIPseudo           : InstrItinClass;
47193323Sed
48193323Sed//===----------------------------------------------------------------------===//
49193323Sed// Mips Generic instruction itineraries.
50193323Sed//===----------------------------------------------------------------------===//
51218893Sdimdef MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
52193323Sed  InstrItinData<IIAlu              , [InstrStage<1,  [ALU]>]>,
53263508Sdim  InstrItinData<IIArith            , [InstrStage<1,  [ALU]>]>,
54263508Sdim  InstrItinData<IILogic            , [InstrStage<1,  [ALU]>]>,
55193323Sed  InstrItinData<IILoad             , [InstrStage<3,  [ALU]>]>,
56193323Sed  InstrItinData<IIStore            , [InstrStage<1,  [ALU]>]>,
57193323Sed  InstrItinData<IIXfer             , [InstrStage<2,  [ALU]>]>,
58193323Sed  InstrItinData<IIBranch           , [InstrStage<1,  [ALU]>]>,
59193323Sed  InstrItinData<IIHiLo             , [InstrStage<1,  [IMULDIV]>]>,
60193323Sed  InstrItinData<IIImul             , [InstrStage<17, [IMULDIV]>]>,
61193323Sed  InstrItinData<IIIdiv             , [InstrStage<38, [IMULDIV]>]>,
62193323Sed  InstrItinData<IIFcvt             , [InstrStage<1,  [ALU]>]>,
63193323Sed  InstrItinData<IIFmove            , [InstrStage<2,  [ALU]>]>,
64193323Sed  InstrItinData<IIFcmp             , [InstrStage<3,  [ALU]>]>,
65193323Sed  InstrItinData<IIFadd             , [InstrStage<4,  [ALU]>]>,
66193323Sed  InstrItinData<IIFmulSingle       , [InstrStage<7,  [ALU]>]>,
67193323Sed  InstrItinData<IIFmulDouble       , [InstrStage<8,  [ALU]>]>,
68193323Sed  InstrItinData<IIFdivSingle       , [InstrStage<23, [ALU]>]>,
69193323Sed  InstrItinData<IIFdivDouble       , [InstrStage<36, [ALU]>]>,
70193323Sed  InstrItinData<IIFsqrtSingle      , [InstrStage<54, [ALU]>]>,
71193323Sed  InstrItinData<IIFsqrtDouble      , [InstrStage<12, [ALU]>]>,
72263508Sdim  InstrItinData<IIFrecipFsqrtStep  , [InstrStage<5,  [ALU]>]>,
73263508Sdim  InstrItinData<IIFLoad            , [InstrStage<3,  [ALU]>]>,
74263508Sdim  InstrItinData<IIFStore           , [InstrStage<1,  [ALU]>]>,
75263508Sdim  InstrItinData<IIFmoveC1          , [InstrStage<2,  [ALU]>]>
76193323Sed]>;
77