72939e6f1f795afa5943642e88fcb60af29c7448
[oota-llvm.git] / lib / Target / Hexagon / Hexagon.td
1 //===- Hexagon.td - Describe the Hexagon Target Machine ---------*- C++ -*-===//
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 //===----------------------------------------------------------------------===//
12
13 //===----------------------------------------------------------------------===//
14 // Target-independent interfaces which we are implementing
15 //===----------------------------------------------------------------------===//
16
17 include "llvm/Target/Target.td"
18
19 //===----------------------------------------------------------------------===//
20 // Hexagon Subtarget features.
21 //
22
23
24 // Hexagon Archtectures
25 def ArchV2       : SubtargetFeature<"v2", "HexagonArchVersion", "V2",
26                                     "Hexagon v2">;
27 def ArchV3       : SubtargetFeature<"v3", "HexagonArchVersion", "V3",
28                                     "Hexagon v3">;
29 def ArchV4       : SubtargetFeature<"v4", "HexagonArchVersion", "V4",
30                                     "Hexagon v4">;
31
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"
41
42
43 def HexagonInstrInfo : InstrInfo {
44   // Define how we want to layout our target-specific information field.
45 }
46
47 //===----------------------------------------------------------------------===//
48 // Hexagon processors supported.
49 //===----------------------------------------------------------------------===//
50
51 class Proc<string Name, ProcessorItineraries Itin,
52            list<SubtargetFeature> Features>
53  : Processor<Name, Itin, Features>;
54
55 def : Proc<"hexagonv2", HexagonItineraries,   [ArchV2]>;
56 def : Proc<"hexagonv3", HexagonItineraries,   [ArchV2, ArchV3]>;
57 def : Proc<"hexagonv4", HexagonItinerariesV4, [ArchV2, ArchV3, ArchV4]>;
58
59 //===----------------------------------------------------------------------===//
60 // Declare the target which we are implementing
61 //===----------------------------------------------------------------------===//
62
63 def Hexagon : Target {
64   // Pull in Instruction Info:
65   let InstructionSet = HexagonInstrInfo;
66 }