blob: ab5093dbfcf37918fa40b448e70a6fe2c10769dc [file] [log] [blame]
Jia Liu31d157a2012-02-18 12:03:15 +00001//===-- Hexagon.td - Describe the Hexagon Target Machine --*- tablegen -*--===//
Tony Linthicumb4b54152011-12-12 21:14:40 +00002//
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//
Jia Liu31d157a2012-02-18 12:03:15 +000010// This is the top level entry point for the Hexagon target.
Tony Linthicumb4b54152011-12-12 21:14:40 +000011//
12//===----------------------------------------------------------------------===//
13
14//===----------------------------------------------------------------------===//
15// Target-independent interfaces which we are implementing
16//===----------------------------------------------------------------------===//
17
18include "llvm/Target/Target.td"
19
20//===----------------------------------------------------------------------===//
21// Hexagon Subtarget features.
Jia Liu31d157a2012-02-18 12:03:15 +000022//===----------------------------------------------------------------------===//
Tony Linthicumb4b54152011-12-12 21:14:40 +000023
24// Hexagon Archtectures
25def ArchV2 : SubtargetFeature<"v2", "HexagonArchVersion", "V2",
26 "Hexagon v2">;
27def ArchV3 : SubtargetFeature<"v3", "HexagonArchVersion", "V3",
28 "Hexagon v3">;
29def ArchV4 : SubtargetFeature<"v4", "HexagonArchVersion", "V4",
30 "Hexagon v4">;
31
32//===----------------------------------------------------------------------===//
33// Register File, Calling Conv, Instruction Descriptions
34//===----------------------------------------------------------------------===//
35include "HexagonSchedule.td"
36include "HexagonRegisterInfo.td"
37include "HexagonCallingConv.td"
38include "HexagonInstrInfo.td"
39include "HexagonIntrinsics.td"
40include "HexagonIntrinsicsDerived.td"
41
42
43def HexagonInstrInfo : InstrInfo {
44 // Define how we want to layout our target-specific information field.
45}
46
47//===----------------------------------------------------------------------===//
48// Hexagon processors supported.
49//===----------------------------------------------------------------------===//
50
51class Proc<string Name, ProcessorItineraries Itin,
52 list<SubtargetFeature> Features>
53 : Processor<Name, Itin, Features>;
54
55def : Proc<"hexagonv2", HexagonItineraries, [ArchV2]>;
56def : Proc<"hexagonv3", HexagonItineraries, [ArchV2, ArchV3]>;
57def : Proc<"hexagonv4", HexagonItinerariesV4, [ArchV2, ArchV3, ArchV4]>;
58
59//===----------------------------------------------------------------------===//
60// Declare the target which we are implementing
61//===----------------------------------------------------------------------===//
62
63def Hexagon : Target {
64 // Pull in Instruction Info:
65 let InstructionSet = HexagonInstrInfo;
66}