1234353Sdim//===-- MSP430.td - Describe the MSP430 Target Machine -----*- tablegen -*-===//
2193323Sed//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6193323Sed//
7193323Sed//===----------------------------------------------------------------------===//
8193323Sed// This is the top level entry point for the MSP430 target.
9193323Sed//===----------------------------------------------------------------------===//
10193323Sed
11193323Sed//===----------------------------------------------------------------------===//
12193323Sed// Target-independent interfaces
13193323Sed//===----------------------------------------------------------------------===//
14193323Sed
15193323Sedinclude "llvm/Target/Target.td"
16193323Sed
17193323Sed//===----------------------------------------------------------------------===//
18193323Sed// Subtarget Features. 
19193323Sed//===----------------------------------------------------------------------===//
20193323Seddef FeatureX
21193323Sed : SubtargetFeature<"ext", "ExtendedInsts", "true",
22193323Sed                    "Enable MSP430-X extensions">;
23193323Sed
24321369Sdimdef FeatureHWMult16
25321369Sdim : SubtargetFeature<"hwmult16", "HWMultMode", "HWMult16",
26321369Sdim                    "Enable 16-bit hardware multiplier">;
27321369Sdim
28321369Sdimdef FeatureHWMult32
29321369Sdim : SubtargetFeature<"hwmult32", "HWMultMode", "HWMult32",
30321369Sdim                    "Enable 32-bit hardware multiplier">;
31321369Sdim
32321369Sdimdef FeatureHWMultF5
33321369Sdim : SubtargetFeature<"hwmultf5", "HWMultMode", "HWMultF5",
34321369Sdim                    "Enable F5 series hardware multiplier">;
35321369Sdim
36193323Sed//===----------------------------------------------------------------------===//
37193323Sed// MSP430 supported processors.
38193323Sed//===----------------------------------------------------------------------===//
39193323Sedclass Proc<string Name, list<SubtargetFeature> Features>
40193323Sed : Processor<Name, NoItineraries, Features>;
41193323Sed
42193323Seddef : Proc<"generic",         []>;
43321369Sdimdef : Proc<"msp430",          []>;
44321369Sdimdef : Proc<"msp430x",         [FeatureX]>;
45193323Sed
46193323Sed//===----------------------------------------------------------------------===//
47193323Sed// Register File Description
48193323Sed//===----------------------------------------------------------------------===//
49193323Sed
50193323Sedinclude "MSP430RegisterInfo.td"
51193323Sed
52193323Sed//===----------------------------------------------------------------------===//
53193323Sed// Calling Convention Description
54193323Sed//===----------------------------------------------------------------------===//
55193323Sed
56193323Sedinclude "MSP430CallingConv.td"
57193323Sed
58193323Sed//===----------------------------------------------------------------------===//
59193323Sed// Instruction Descriptions
60193323Sed//===----------------------------------------------------------------------===//
61193323Sed
62193323Sedinclude "MSP430InstrInfo.td"
63193323Sed
64206274Srdivackydef MSP430InstrInfo : InstrInfo;
65193323Sed
66344779Sdim//===---------------------------------------------------------------------===//
67344779Sdim// Assembly Printers
68344779Sdim//===---------------------------------------------------------------------===//
69344779Sdim
70344779Sdimdef MSP430AsmWriter : AsmWriter {
71344779Sdim  string AsmWriterClassName = "InstPrinter";
72344779Sdim}
73344779Sdim
74344779Sdim//===---------------------------------------------------------------------===//
75344779Sdim// Assembly Parsers
76344779Sdim//===---------------------------------------------------------------------===//
77344779Sdim
78344779Sdimdef MSP430AsmParser : AsmParser {
79344779Sdim  let AllowDuplicateRegisterNames = 1;
80344779Sdim  let ShouldEmitMatchRegisterAltName = 1;
81344779Sdim}
82344779Sdim
83193323Sed//===----------------------------------------------------------------------===//
84193323Sed// Target Declaration
85193323Sed//===----------------------------------------------------------------------===//
86193323Sed
87193323Seddef MSP430 : Target {
88193323Sed  let InstructionSet = MSP430InstrInfo;
89344779Sdim  let AssemblyParsers = [MSP430AsmParser];
90193323Sed}
91193323Sed
92