]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/lib/Target/Mips/MipsSchedule.td
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / lib / Target / Mips / MipsSchedule.td
1 //===-- MipsSchedule.td - Mips Scheduling Definitions ------*- tablegen -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 //===----------------------------------------------------------------------===//
11 // Functional units across Mips chips sets. Based on GCC/Mips backend files.
12 //===----------------------------------------------------------------------===//
13 def ALU     : FuncUnit;
14 def IMULDIV : FuncUnit;
15
16 //===----------------------------------------------------------------------===//
17 // Instruction Itinerary classes used for Mips
18 //===----------------------------------------------------------------------===//
19 def IIAlu              : InstrItinClass;
20 def IIArith            : InstrItinClass;
21 def IILogic            : InstrItinClass;
22 def IILoad             : InstrItinClass;
23 def IIStore            : InstrItinClass;
24 def IIXfer             : InstrItinClass;
25 def IIBranch           : InstrItinClass;
26 def IIHiLo             : InstrItinClass;
27 def IIImul             : InstrItinClass;
28 def IIImult            : InstrItinClass;
29 def IIIdiv             : InstrItinClass;
30 def IIseb              : InstrItinClass;
31 def IIslt              : InstrItinClass;
32 def IIFcvt             : InstrItinClass;
33 def IIFmove            : InstrItinClass;
34 def IIFcmp             : InstrItinClass;
35 def IIFadd             : InstrItinClass;
36 def IIFmulSingle       : InstrItinClass;
37 def IIFmulDouble       : InstrItinClass;
38 def IIFdivSingle       : InstrItinClass;
39 def IIFdivDouble       : InstrItinClass;
40 def IIFsqrtSingle      : InstrItinClass;
41 def IIFsqrtDouble      : InstrItinClass;
42 def IIFrecipFsqrtStep  : InstrItinClass;
43 def IIFLoad            : InstrItinClass;
44 def IIFStore           : InstrItinClass;
45 def IIFmoveC1          : InstrItinClass;
46 def IIPseudo           : InstrItinClass;
47
48 //===----------------------------------------------------------------------===//
49 // Mips Generic instruction itineraries.
50 //===----------------------------------------------------------------------===//
51 def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
52   InstrItinData<IIAlu              , [InstrStage<1,  [ALU]>]>,
53   InstrItinData<IIArith            , [InstrStage<1,  [ALU]>]>,
54   InstrItinData<IILogic            , [InstrStage<1,  [ALU]>]>,
55   InstrItinData<IILoad             , [InstrStage<3,  [ALU]>]>,
56   InstrItinData<IIStore            , [InstrStage<1,  [ALU]>]>,
57   InstrItinData<IIXfer             , [InstrStage<2,  [ALU]>]>,
58   InstrItinData<IIBranch           , [InstrStage<1,  [ALU]>]>,
59   InstrItinData<IIHiLo             , [InstrStage<1,  [IMULDIV]>]>,
60   InstrItinData<IIImul             , [InstrStage<17, [IMULDIV]>]>,
61   InstrItinData<IIIdiv             , [InstrStage<38, [IMULDIV]>]>,
62   InstrItinData<IIFcvt             , [InstrStage<1,  [ALU]>]>,
63   InstrItinData<IIFmove            , [InstrStage<2,  [ALU]>]>,
64   InstrItinData<IIFcmp             , [InstrStage<3,  [ALU]>]>,
65   InstrItinData<IIFadd             , [InstrStage<4,  [ALU]>]>,
66   InstrItinData<IIFmulSingle       , [InstrStage<7,  [ALU]>]>,
67   InstrItinData<IIFmulDouble       , [InstrStage<8,  [ALU]>]>,
68   InstrItinData<IIFdivSingle       , [InstrStage<23, [ALU]>]>,
69   InstrItinData<IIFdivDouble       , [InstrStage<36, [ALU]>]>,
70   InstrItinData<IIFsqrtSingle      , [InstrStage<54, [ALU]>]>,
71   InstrItinData<IIFsqrtDouble      , [InstrStage<12, [ALU]>]>,
72   InstrItinData<IIFrecipFsqrtStep  , [InstrStage<5,  [ALU]>]>,
73   InstrItinData<IIFLoad            , [InstrStage<3,  [ALU]>]>,
74   InstrItinData<IIFStore           , [InstrStage<1,  [ALU]>]>,
75   InstrItinData<IIFmoveC1          , [InstrStage<2,  [ALU]>]>
76 ]>;