blob: 4a50d16093080fda06eb5854ec4b3997f63b31a6 [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
Evandro Menezese5041e62012-04-12 17:55:53 +000042def HexagonInstrInfo : InstrInfo;
Tony Linthicumb4b54152011-12-12 21:14:40 +000043
44//===----------------------------------------------------------------------===//
45// Hexagon processors supported.
46//===----------------------------------------------------------------------===//
47
48class Proc<string Name, ProcessorItineraries Itin,
49 list<SubtargetFeature> Features>
50 : Processor<Name, Itin, Features>;
51
52def : Proc<"hexagonv2", HexagonItineraries, [ArchV2]>;
53def : Proc<"hexagonv3", HexagonItineraries, [ArchV2, ArchV3]>;
54def : Proc<"hexagonv4", HexagonItinerariesV4, [ArchV2, ArchV3, ArchV4]>;
55
Evandro Menezese5041e62012-04-12 17:55:53 +000056// Hexagon Uses the MC printer for assembler output, so make sure the TableGen
57// AsmWriter bits get associated with the correct class.
58def HexagonAsmWriter : AsmWriter {
59 string AsmWriterClassName = "InstPrinter";
60 bit isMCAsmWriter = 1;
61}
62
Tony Linthicumb4b54152011-12-12 21:14:40 +000063//===----------------------------------------------------------------------===//
64// Declare the target which we are implementing
65//===----------------------------------------------------------------------===//
66
67def Hexagon : Target {
68 // Pull in Instruction Info:
69 let InstructionSet = HexagonInstrInfo;
Evandro Menezese5041e62012-04-12 17:55:53 +000070
71 let AssemblyWriters = [HexagonAsmWriter];
Tony Linthicumb4b54152011-12-12 21:14:40 +000072}