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