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