MipsSchedule.td revision ae24f7d3c6770fb32eb1f6215bab1fc92cbe2d94
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//===----------------------------------------------------------------------===// 13def ALU : FuncUnit; 14def IMULDIV : FuncUnit; 15 16//===----------------------------------------------------------------------===// 17// Instruction Itinerary classes used for Mips 18//===----------------------------------------------------------------------===// 19def IIAlu : InstrItinClass; 20def IILoad : InstrItinClass; 21def IIStore : InstrItinClass; 22def IIXfer : InstrItinClass; 23def IIBranch : InstrItinClass; 24def IIHiLo : InstrItinClass; 25def IIImul : InstrItinClass; 26def IIImult : InstrItinClass; 27def IIIdiv : InstrItinClass; 28def IIseb : InstrItinClass; 29def IIslt : InstrItinClass; 30def IIFcvt : InstrItinClass; 31def IIFmove : InstrItinClass; 32def IIFcmp : InstrItinClass; 33def IIFadd : InstrItinClass; 34def IIFmulSingle : InstrItinClass; 35def IIFmulDouble : InstrItinClass; 36def IIFdivSingle : InstrItinClass; 37def IIFdivDouble : InstrItinClass; 38def IIFsqrtSingle : InstrItinClass; 39def IIFsqrtDouble : InstrItinClass; 40def IIFrecipFsqrtStep : InstrItinClass; 41def IIFLoad : InstrItinClass; 42def IIFStore : InstrItinClass; 43def IIFmoveC1 : InstrItinClass; 44def IIPseudo : InstrItinClass; 45 46//===----------------------------------------------------------------------===// 47// Mips Generic instruction itineraries. 48//===----------------------------------------------------------------------===// 49def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [ 50 InstrItinData<IIAlu , [InstrStage<1, [ALU]>]>, 51 InstrItinData<IILoad , [InstrStage<3, [ALU]>]>, 52 InstrItinData<IIStore , [InstrStage<1, [ALU]>]>, 53 InstrItinData<IIXfer , [InstrStage<2, [ALU]>]>, 54 InstrItinData<IIBranch , [InstrStage<1, [ALU]>]>, 55 InstrItinData<IIHiLo , [InstrStage<1, [IMULDIV]>]>, 56 InstrItinData<IIImul , [InstrStage<17, [IMULDIV]>]>, 57 InstrItinData<IIIdiv , [InstrStage<38, [IMULDIV]>]>, 58 InstrItinData<IIFcvt , [InstrStage<1, [ALU]>]>, 59 InstrItinData<IIFmove , [InstrStage<2, [ALU]>]>, 60 InstrItinData<IIFcmp , [InstrStage<3, [ALU]>]>, 61 InstrItinData<IIFadd , [InstrStage<4, [ALU]>]>, 62 InstrItinData<IIFmulSingle , [InstrStage<7, [ALU]>]>, 63 InstrItinData<IIFmulDouble , [InstrStage<8, [ALU]>]>, 64 InstrItinData<IIFdivSingle , [InstrStage<23, [ALU]>]>, 65 InstrItinData<IIFdivDouble , [InstrStage<36, [ALU]>]>, 66 InstrItinData<IIFsqrtSingle , [InstrStage<54, [ALU]>]>, 67 InstrItinData<IIFsqrtDouble , [InstrStage<12, [ALU]>]>, 68 InstrItinData<IIFrecipFsqrtStep , [InstrStage<5, [ALU]>]>, 69 InstrItinData<IIFLoad , [InstrStage<3, [ALU]>]>, 70 InstrItinData<IIFStore , [InstrStage<1, [ALU]>]>, 71 InstrItinData<IIFmoveC1 , [InstrStage<2, [ALU]>]> 72]>; 73