1//===- ARMSchedule.td - ARM 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 ARM processors
12//
13def FU_Issue : FuncUnit; // issue
14def FU_Pipe0 : FuncUnit; // pipeline 0
15def FU_Pipe1 : FuncUnit; // pipeline 1
16def FU_LdSt0 : FuncUnit; // pipeline 0 load/store
17def FU_LdSt1 : FuncUnit; // pipeline 1 load/store
18def FU_NPipe : FuncUnit; // NEON ALU/MUL pipe
19def FU_NLSPipe : FuncUnit; // NEON LS pipe
20
21//===----------------------------------------------------------------------===//
|
11// Instruction Itinerary classes used for ARM 12// 13def IIC_iALUx : InstrItinClass; 14def IIC_iALUi : InstrItinClass; 15def IIC_iALUr : InstrItinClass; 16def IIC_iALUsi : InstrItinClass; 17def IIC_iALUsr : InstrItinClass; 18def IIC_iUNAr : InstrItinClass; 19def IIC_iUNAsi : InstrItinClass; 20def IIC_iUNAsr : InstrItinClass; 21def IIC_iCMPi : InstrItinClass; 22def IIC_iCMPr : InstrItinClass; 23def IIC_iCMPsi : InstrItinClass; 24def IIC_iCMPsr : InstrItinClass; 25def IIC_iMOVi : InstrItinClass; 26def IIC_iMOVr : InstrItinClass; 27def IIC_iMOVsi : InstrItinClass; 28def IIC_iMOVsr : InstrItinClass; 29def IIC_iCMOVi : InstrItinClass; 30def IIC_iCMOVr : InstrItinClass; 31def IIC_iCMOVsi : InstrItinClass; 32def IIC_iCMOVsr : InstrItinClass; 33def IIC_iMUL16 : InstrItinClass; 34def IIC_iMAC16 : InstrItinClass; 35def IIC_iMUL32 : InstrItinClass; 36def IIC_iMAC32 : InstrItinClass; 37def IIC_iMUL64 : InstrItinClass; 38def IIC_iMAC64 : InstrItinClass; 39def IIC_iLoadi : InstrItinClass; 40def IIC_iLoadr : InstrItinClass; 41def IIC_iLoadsi : InstrItinClass; 42def IIC_iLoadiu : InstrItinClass; 43def IIC_iLoadru : InstrItinClass; 44def IIC_iLoadsiu : InstrItinClass; 45def IIC_iLoadm : InstrItinClass; 46def IIC_iStorei : InstrItinClass; 47def IIC_iStorer : InstrItinClass; 48def IIC_iStoresi : InstrItinClass; 49def IIC_iStoreiu : InstrItinClass; 50def IIC_iStoreru : InstrItinClass; 51def IIC_iStoresiu : InstrItinClass; 52def IIC_iStorem : InstrItinClass; 53def IIC_Br : InstrItinClass; 54def IIC_fpSTAT : InstrItinClass; 55def IIC_fpUNA32 : InstrItinClass; 56def IIC_fpUNA64 : InstrItinClass; 57def IIC_fpCMP32 : InstrItinClass; 58def IIC_fpCMP64 : InstrItinClass; 59def IIC_fpCVTSD : InstrItinClass; 60def IIC_fpCVTDS : InstrItinClass;
|
61def IIC_fpCVTSH : InstrItinClass; 62def IIC_fpCVTHS : InstrItinClass; |
63def IIC_fpCVTIS : InstrItinClass; 64def IIC_fpCVTID : InstrItinClass; 65def IIC_fpCVTSI : InstrItinClass; 66def IIC_fpCVTDI : InstrItinClass;
|
67def IIC_fpMOVIS : InstrItinClass; 68def IIC_fpMOVID : InstrItinClass; 69def IIC_fpMOVSI : InstrItinClass; 70def IIC_fpMOVDI : InstrItinClass; |
71def IIC_fpALU32 : InstrItinClass; 72def IIC_fpALU64 : InstrItinClass; 73def IIC_fpMUL32 : InstrItinClass; 74def IIC_fpMUL64 : InstrItinClass; 75def IIC_fpMAC32 : InstrItinClass; 76def IIC_fpMAC64 : InstrItinClass; 77def IIC_fpDIV32 : InstrItinClass; 78def IIC_fpDIV64 : InstrItinClass; 79def IIC_fpSQRT32 : InstrItinClass; 80def IIC_fpSQRT64 : InstrItinClass; 81def IIC_fpLoad32 : InstrItinClass; 82def IIC_fpLoad64 : InstrItinClass; 83def IIC_fpLoadm : InstrItinClass; 84def IIC_fpStore32 : InstrItinClass; 85def IIC_fpStore64 : InstrItinClass; 86def IIC_fpStorem : InstrItinClass; 87def IIC_VLD1 : InstrItinClass; 88def IIC_VLD2 : InstrItinClass; 89def IIC_VLD3 : InstrItinClass; 90def IIC_VLD4 : InstrItinClass; 91def IIC_VST : InstrItinClass; 92def IIC_VUNAD : InstrItinClass; 93def IIC_VUNAQ : InstrItinClass; 94def IIC_VBIND : InstrItinClass; 95def IIC_VBINQ : InstrItinClass; 96def IIC_VMOVImm : InstrItinClass; 97def IIC_VMOVD : InstrItinClass; 98def IIC_VMOVQ : InstrItinClass; 99def IIC_VMOVIS : InstrItinClass; 100def IIC_VMOVID : InstrItinClass; 101def IIC_VMOVISL : InstrItinClass; 102def IIC_VMOVSI : InstrItinClass; 103def IIC_VMOVDI : InstrItinClass; 104def IIC_VPERMD : InstrItinClass; 105def IIC_VPERMQ : InstrItinClass; 106def IIC_VPERMQ3 : InstrItinClass; 107def IIC_VMACD : InstrItinClass; 108def IIC_VMACQ : InstrItinClass; 109def IIC_VRECSD : InstrItinClass; 110def IIC_VRECSQ : InstrItinClass; 111def IIC_VCNTiD : InstrItinClass; 112def IIC_VCNTiQ : InstrItinClass; 113def IIC_VUNAiD : InstrItinClass; 114def IIC_VUNAiQ : InstrItinClass; 115def IIC_VQUNAiD : InstrItinClass; 116def IIC_VQUNAiQ : InstrItinClass; 117def IIC_VBINiD : InstrItinClass; 118def IIC_VBINiQ : InstrItinClass; 119def IIC_VSUBiD : InstrItinClass; 120def IIC_VSUBiQ : InstrItinClass; 121def IIC_VBINi4D : InstrItinClass; 122def IIC_VBINi4Q : InstrItinClass;
|
123def IIC_VSUBi4D : InstrItinClass; 124def IIC_VSUBi4Q : InstrItinClass; 125def IIC_VABAD : InstrItinClass; 126def IIC_VABAQ : InstrItinClass; |
127def IIC_VSHLiD : InstrItinClass; 128def IIC_VSHLiQ : InstrItinClass; 129def IIC_VSHLi4D : InstrItinClass; 130def IIC_VSHLi4Q : InstrItinClass; 131def IIC_VPALiD : InstrItinClass; 132def IIC_VPALiQ : InstrItinClass; 133def IIC_VMULi16D : InstrItinClass; 134def IIC_VMULi32D : InstrItinClass; 135def IIC_VMULi16Q : InstrItinClass; 136def IIC_VMULi32Q : InstrItinClass; 137def IIC_VMACi16D : InstrItinClass; 138def IIC_VMACi32D : InstrItinClass; 139def IIC_VMACi16Q : InstrItinClass; 140def IIC_VMACi32Q : InstrItinClass; 141def IIC_VEXTD : InstrItinClass; 142def IIC_VEXTQ : InstrItinClass; 143def IIC_VTB1 : InstrItinClass; 144def IIC_VTB2 : InstrItinClass; 145def IIC_VTB3 : InstrItinClass; 146def IIC_VTB4 : InstrItinClass; 147def IIC_VTBX1 : InstrItinClass; 148def IIC_VTBX2 : InstrItinClass; 149def IIC_VTBX3 : InstrItinClass; 150def IIC_VTBX4 : InstrItinClass; 151 152//===----------------------------------------------------------------------===// 153// Processor instruction itineraries. 154
|
156def GenericItineraries : ProcessorItineraries<[]>;
|
155def GenericItineraries : ProcessorItineraries<[], []>; |
156
|
158
|
157include "ARMScheduleV6.td"
|
160include "ARMScheduleV7.td"
|
158include "ARMScheduleA8.td" 159include "ARMScheduleA9.td" |
|