1 //===-- Hexagon.td - Describe the Hexagon Target Machine --*- tablegen -*--===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This is the top level entry point for the Hexagon target.
12 //===----------------------------------------------------------------------===//
14 //===----------------------------------------------------------------------===//
15 // Target-independent interfaces which we are implementing
16 //===----------------------------------------------------------------------===//
18 include "llvm/Target/Target.td"
20 //===----------------------------------------------------------------------===//
21 // Hexagon Subtarget features.
22 //===----------------------------------------------------------------------===//
24 // Hexagon Archtectures
25 def ArchV2 : SubtargetFeature<"v2", "HexagonArchVersion", "V2",
27 def ArchV3 : SubtargetFeature<"v3", "HexagonArchVersion", "V3",
29 def ArchV4 : SubtargetFeature<"v4", "HexagonArchVersion", "V4",
32 //===----------------------------------------------------------------------===//
33 // Register File, Calling Conv, Instruction Descriptions
34 //===----------------------------------------------------------------------===//
35 include "HexagonSchedule.td"
36 include "HexagonRegisterInfo.td"
37 include "HexagonCallingConv.td"
38 include "HexagonInstrInfo.td"
39 include "HexagonIntrinsics.td"
40 include "HexagonIntrinsicsDerived.td"
43 def HexagonInstrInfo : InstrInfo {
44 // Define how we want to layout our target-specific information field.
47 //===----------------------------------------------------------------------===//
48 // Hexagon processors supported.
49 //===----------------------------------------------------------------------===//
51 class Proc<string Name, ProcessorItineraries Itin,
52 list<SubtargetFeature> Features>
53 : Processor<Name, Itin, Features>;
55 def : Proc<"hexagonv2", HexagonItineraries, [ArchV2]>;
56 def : Proc<"hexagonv3", HexagonItineraries, [ArchV2, ArchV3]>;
57 def : Proc<"hexagonv4", HexagonItinerariesV4, [ArchV2, ArchV3, ArchV4]>;
59 //===----------------------------------------------------------------------===//
60 // Declare the target which we are implementing
61 //===----------------------------------------------------------------------===//
63 def Hexagon : Target {
64 // Pull in Instruction Info:
65 let InstructionSet = HexagonInstrInfo;