1 //===- HexagonSchedule.td - Hexagon 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 // Functional Units 11 def LUNIT : FuncUnit; 12 def LSUNIT : FuncUnit; 13 def MUNIT : FuncUnit; 14 def SUNIT : FuncUnit; 15 16 // Itinerary classes 17 def ALU32 : InstrItinClass; 18 def ALU64 : InstrItinClass; 19 def CR : InstrItinClass; 20 def J : InstrItinClass; 21 def JR : InstrItinClass; 22 def LD : InstrItinClass; 23 def M : InstrItinClass; 24 def ST : InstrItinClass; 25 def S : InstrItinClass; 26 def SYS : InstrItinClass; 27 def MARKER : InstrItinClass; 28 def PSEUDO : InstrItinClass; 29 30 def HexagonItineraries : 31 ProcessorItineraries<[LUNIT, LSUNIT, MUNIT, SUNIT], [], [ 32 InstrItinData<ALU32 , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]>, 33 InstrItinData<ALU64 , [InstrStage<1, [MUNIT, SUNIT]>]>, 34 InstrItinData<CR , [InstrStage<1, [SUNIT]>]>, 35 InstrItinData<J , [InstrStage<1, [SUNIT, MUNIT]>]>, 36 InstrItinData<JR , [InstrStage<1, [MUNIT]>]>, 37 InstrItinData<LD , [InstrStage<1, [LUNIT, LSUNIT]>]>, 38 InstrItinData<M , [InstrStage<1, [MUNIT, SUNIT]>]>, 39 InstrItinData<ST , [InstrStage<1, [LSUNIT]>]>, 40 InstrItinData<S , [InstrStage<1, [SUNIT, MUNIT]>]>, 41 InstrItinData<SYS , [InstrStage<1, [LSUNIT]>]>, 42 InstrItinData<MARKER , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]>, 43 InstrItinData<PSEUDO , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT]>]> 44 ]>; 45 46 def HexagonModel : SchedMachineModel { 47 // Max issue per cycle == bundle width. 48 let IssueWidth = 4; 49 let Itineraries = HexagonItineraries; 50 let LoadLatency = 1; 51 } 52 53 //===----------------------------------------------------------------------===// 54 // V4 Machine Info + 55 //===----------------------------------------------------------------------===// 56 57 include "HexagonScheduleV4.td" 58 59 //===----------------------------------------------------------------------===// 60 // V4 Machine Info - 61 //===----------------------------------------------------------------------===// 62