//===- HexagonSchedule.td - Hexagon Scheduling Definitions -*- tablegen -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// def Hex_FWD : Bypass; def HVX_FWD : Bypass; // Functional Units. def SLOT0 : FuncUnit; def SLOT1 : FuncUnit; def SLOT2 : FuncUnit; def SLOT3 : FuncUnit; // Endloop is a pseudo instruction that is encoded with 2 bits in a packet // rather than taking an execution slot. This special unit is needed // to schedule an ENDLOOP with 4 other instructions. def SLOT_ENDLOOP: FuncUnit; // CVI pipes from the "Hexagon Multimedia Co-Processor Extensions Arch Spec". def CVI_ST : FuncUnit; def CVI_XLANE : FuncUnit; def CVI_SHIFT : FuncUnit; def CVI_MPY0 : FuncUnit; def CVI_MPY1 : FuncUnit; def CVI_LD : FuncUnit; def CVI_ZW : FuncUnit; // Z register write port // Combined functional units. def CVI_XLSHF : FuncUnit; def CVI_MPY01 : FuncUnit; def CVI_ALL : FuncUnit; def CVI_ALL_NOMEM : FuncUnit; // Combined functional unit data. def HexagonComboFuncsV60 : ComboFuncUnits<[ ComboFuncData, ComboFuncData, ComboFuncData, ComboFuncData ]>; // Itinerary classes. def PSEUDO : InstrItinClass; def PSEUDOM : InstrItinClass; def DUPLEX : InstrItinClass; def tc_ENDLOOP : InstrItinClass; //===----------------------------------------------------------------------===// // Auto-generated itinerary classes //===----------------------------------------------------------------------===// include "HexagonDepIICScalar.td" include "HexagonDepIICHVX.td" //===----------------------------------------------------------------------===// // V5 Machine Info + //===----------------------------------------------------------------------===// include "HexagonScheduleV5.td" // V55 Machine Info + include "HexagonScheduleV55.td" //===----------------------------------------------------------------------===// // V60 Machine Info - //===----------------------------------------------------------------------===// include "HexagonIICScalar.td" include "HexagonIICHVX.td" include "HexagonScheduleV60.td" //===----------------------------------------------------------------------===// // V62 Machine Info + //===----------------------------------------------------------------------===// include "HexagonScheduleV62.td" //===----------------------------------------------------------------------===// // V65 Machine Info + //===----------------------------------------------------------------------===// include "HexagonScheduleV65.td" //===----------------------------------------------------------------------===// // V66 Machine Info + //===----------------------------------------------------------------------===// include "HexagonScheduleV66.td"