| //===-- MSP430.td - Describe the MSP430 Target Machine -----*- tablegen -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // This is the top level entry point for the MSP430 target. | |
| //===----------------------------------------------------------------------===// | |
| //===----------------------------------------------------------------------===// | |
| // Target-independent interfaces | |
| //===----------------------------------------------------------------------===// | |
| include "llvm/Target/Target.td" | |
| //===----------------------------------------------------------------------===// | |
| // Subtarget Features. | |
| //===----------------------------------------------------------------------===// | |
| def FeatureX | |
| : SubtargetFeature<"ext", "ExtendedInsts", "true", | |
| "Enable MSP430-X extensions">; | |
| def FeatureHWMult16 | |
| : SubtargetFeature<"hwmult16", "HWMultMode", "HWMult16", | |
| "Enable 16-bit hardware multiplier">; | |
| def FeatureHWMult32 | |
| : SubtargetFeature<"hwmult32", "HWMultMode", "HWMult32", | |
| "Enable 32-bit hardware multiplier">; | |
| def FeatureHWMultF5 | |
| : SubtargetFeature<"hwmultf5", "HWMultMode", "HWMultF5", | |
| "Enable F5 series hardware multiplier">; | |
| //===----------------------------------------------------------------------===// | |
| // MSP430 supported processors. | |
| //===----------------------------------------------------------------------===// | |
| class Proc<string Name, list<SubtargetFeature> Features> | |
| : Processor<Name, NoItineraries, Features>; | |
| def : Proc<"generic", []>; | |
| def : Proc<"msp430", []>; | |
| def : Proc<"msp430x", [FeatureX]>; | |
| //===----------------------------------------------------------------------===// | |
| // Register File Description | |
| //===----------------------------------------------------------------------===// | |
| include "MSP430RegisterInfo.td" | |
| //===----------------------------------------------------------------------===// | |
| // Calling Convention Description | |
| //===----------------------------------------------------------------------===// | |
| include "MSP430CallingConv.td" | |
| //===----------------------------------------------------------------------===// | |
| // Instruction Descriptions | |
| //===----------------------------------------------------------------------===// | |
| include "MSP430InstrInfo.td" | |
| def MSP430InstrInfo : InstrInfo; | |
| //===---------------------------------------------------------------------===// | |
| // Assembly Printers | |
| //===---------------------------------------------------------------------===// | |
| def MSP430AsmWriter : AsmWriter { | |
| string AsmWriterClassName = "InstPrinter"; | |
| } | |
| //===---------------------------------------------------------------------===// | |
| // Assembly Parsers | |
| //===---------------------------------------------------------------------===// | |
| def MSP430AsmParser : AsmParser { | |
| let AllowDuplicateRegisterNames = 1; | |
| let ShouldEmitMatchRegisterAltName = 1; | |
| } | |
| //===----------------------------------------------------------------------===// | |
| // Target Declaration | |
| //===----------------------------------------------------------------------===// | |
| def MSP430 : Target { | |
| let InstructionSet = MSP430InstrInfo; | |
| let AssemblyParsers = [MSP430AsmParser]; | |
| } | |