1//===-- MSP430.td - Describe the MSP430 Target Machine -----*- tablegen -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8// This is the top level entry point for the MSP430 target.
9//===----------------------------------------------------------------------===//
10
11//===----------------------------------------------------------------------===//
12// Target-independent interfaces
13//===----------------------------------------------------------------------===//
14
15include "llvm/Target/Target.td"
16
17//===----------------------------------------------------------------------===//
18// Subtarget Features. 
19//===----------------------------------------------------------------------===//
20def FeatureX
21 : SubtargetFeature<"ext", "ExtendedInsts", "true",
22                    "Enable MSP430-X extensions">;
23
24def FeatureHWMult16
25 : SubtargetFeature<"hwmult16", "HWMultMode", "HWMult16",
26                    "Enable 16-bit hardware multiplier">;
27
28def FeatureHWMult32
29 : SubtargetFeature<"hwmult32", "HWMultMode", "HWMult32",
30                    "Enable 32-bit hardware multiplier">;
31
32def FeatureHWMultF5
33 : SubtargetFeature<"hwmultf5", "HWMultMode", "HWMultF5",
34                    "Enable F5 series hardware multiplier">;
35
36//===----------------------------------------------------------------------===//
37// MSP430 supported processors.
38//===----------------------------------------------------------------------===//
39class Proc<string Name, list<SubtargetFeature> Features>
40 : Processor<Name, NoItineraries, Features>;
41
42def : Proc<"generic",         []>;
43def : Proc<"msp430",          []>;
44def : Proc<"msp430x",         [FeatureX]>;
45
46//===----------------------------------------------------------------------===//
47// Register File Description
48//===----------------------------------------------------------------------===//
49
50include "MSP430RegisterInfo.td"
51
52//===----------------------------------------------------------------------===//
53// Calling Convention Description
54//===----------------------------------------------------------------------===//
55
56include "MSP430CallingConv.td"
57
58//===----------------------------------------------------------------------===//
59// Instruction Descriptions
60//===----------------------------------------------------------------------===//
61
62include "MSP430InstrInfo.td"
63
64def MSP430InstrInfo : InstrInfo;
65
66//===---------------------------------------------------------------------===//
67// Assembly Printers
68//===---------------------------------------------------------------------===//
69
70def MSP430AsmWriter : AsmWriter {
71  string AsmWriterClassName = "InstPrinter";
72}
73
74//===---------------------------------------------------------------------===//
75// Assembly Parsers
76//===---------------------------------------------------------------------===//
77
78def MSP430AsmParser : AsmParser {
79  let AllowDuplicateRegisterNames = 1;
80  let ShouldEmitMatchRegisterAltName = 1;
81}
82
83//===----------------------------------------------------------------------===//
84// Target Declaration
85//===----------------------------------------------------------------------===//
86
87def MSP430 : Target {
88  let InstructionSet = MSP430InstrInfo;
89  let AssemblyParsers = [MSP430AsmParser];
90}
91
92