78 lines · plain
1//===- HexagonSchedule.td - Hexagon Scheduling Definitions -*- tablegen -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9def Hex_FWD : Bypass;10def HVX_FWD : Bypass;11 12// Functional Units.13def SLOT0 : FuncUnit;14def SLOT1 : FuncUnit;15def SLOT2 : FuncUnit;16def SLOT3 : FuncUnit;17// Endloop is a pseudo instruction that is encoded with 2 bits in a packet18// rather than taking an execution slot. This special unit is needed19// to schedule an ENDLOOP with 4 other instructions.20def SLOT_ENDLOOP: FuncUnit;21 22// CVI pipes from the "Hexagon Multimedia Co-Processor Extensions Arch Spec".23def CVI_ST : FuncUnit;24def CVI_XLANE : FuncUnit;25def CVI_SHIFT : FuncUnit;26def CVI_MPY0 : FuncUnit;27def CVI_MPY1 : FuncUnit;28def CVI_LD : FuncUnit;29def CVI_ZW : FuncUnit; // Z register write port30 31// Combined functional units.32def CVI_XLSHF : FuncUnit;33def CVI_MPY01 : FuncUnit;34def CVI_ALL : FuncUnit;35def CVI_ALL_NOMEM : FuncUnit;36 37// Combined functional unit data.38def HexagonComboFuncsV60 :39 ComboFuncUnits<[40 ComboFuncData<CVI_XLSHF , [CVI_XLANE, CVI_SHIFT]>,41 ComboFuncData<CVI_MPY01 , [CVI_MPY0, CVI_MPY1]>,42 ComboFuncData<CVI_ALL , [CVI_ST, CVI_XLANE, CVI_SHIFT,43 CVI_MPY0, CVI_MPY1, CVI_LD]>,44 ComboFuncData<CVI_ALL_NOMEM, [CVI_XLANE, CVI_SHIFT, CVI_MPY0, CVI_MPY1]>45 ]>;46 47// Itinerary classes.48def PSEUDO : InstrItinClass;49def PSEUDOM : InstrItinClass;50def DUPLEX : InstrItinClass;51def tc_ENDLOOP : InstrItinClass;52 53//===----------------------------------------------------------------------===//54// Auto-generated itinerary classes55//===----------------------------------------------------------------------===//56include "HexagonDepIICScalar.td"57include "HexagonDepIICHVX.td"58 59include "HexagonScheduleV5.td"60include "HexagonScheduleV55.td"61 62include "HexagonIICScalar.td"63include "HexagonIICHVX.td"64include "HexagonScheduleV60.td"65 66include "HexagonScheduleV62.td"67include "HexagonScheduleV65.td"68include "HexagonScheduleV66.td"69include "HexagonScheduleV67.td"70include "HexagonScheduleV67T.td"71include "HexagonScheduleV68.td"72include "HexagonScheduleV69.td"73include "HexagonScheduleV71.td"74include "HexagonScheduleV71T.td"75include "HexagonScheduleV73.td"76include "HexagonScheduleV75.td"77include "HexagonScheduleV79.td"78include "HexagonScheduleV81.td"