139 lines · plain
1//===-- M68k.td - Motorola 680x0 target definitions --------*- 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-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// This is a target description file for the Motorola 680x0 family, referred11/// to here as the "M68k" architecture.12///13//===----------------------------------------------------------------------===//14 15include "llvm/Target/Target.td"16 17//===----------------------------------------------------------------------===//18// M68k Subtarget features19//===----------------------------------------------------------------------===//20 21def FeatureISA0022 : SubtargetFeature<"isa-68000", "SubtargetKind", "M00",23 "Is M68000 ISA supported">;24 25def FeatureISA1026 : SubtargetFeature<"isa-68010", "SubtargetKind", "M10",27 "Is M68010 ISA supported",28 [ FeatureISA00 ]>;29 30def FeatureISA2031 : SubtargetFeature<"isa-68020", "SubtargetKind", "M20",32 "Is M68020 ISA supported",33 [ FeatureISA10 ]>;34 35def FeatureISA3036 : SubtargetFeature<"isa-68030", "SubtargetKind", "M30",37 "Is M68030 ISA supported",38 [ FeatureISA20 ]>;39 40def FeatureISA88141 : SubtargetFeature<"isa-68881", "FPUKind", "M881",42 "Is M68881 (FPU) ISA supported">;43 44def FeatureISA88245 : SubtargetFeature<"isa-68882", "FPUKind", "M882",46 "Is M68882 (FPU) ISA supported",47 [ FeatureISA881 ]>;48 49def FeatureISA4050 : SubtargetFeature<"isa-68040", "SubtargetKind", "M40",51 "Is M68040 ISA supported",52 [ FeatureISA30, FeatureISA882 ]>;53 54def FeatureISA6055 : SubtargetFeature<"isa-68060", "SubtargetKind", "M60",56 "Is M68060 ISA supported",57 [ FeatureISA40 ]>;58 59foreach i = {0-6} in60 def FeatureReserveA#i :61 SubtargetFeature<"reserve-a"#i, "UserReservedRegister[M68k::A"#i#"]",62 "true", "Reserve A"#i#" register">;63foreach i = {0-7} in64 def FeatureReserveD#i :65 SubtargetFeature<"reserve-d"#i, "UserReservedRegister[M68k::D"#i#"]",66 "true", "Reserve D"#i#" register">;67 68//===----------------------------------------------------------------------===//69// M68k processors supported.70//===----------------------------------------------------------------------===//71 72include "M68kSchedule.td"73 74class Proc<string Name, list<SubtargetFeature> Features>75 : ProcessorModel<Name, GenericM68kModel, Features>;76 77def : Proc<"generic", [ FeatureISA00 ]>;78def : Proc<"M68000", [ FeatureISA00 ]>;79def : Proc<"M68010", [ FeatureISA10 ]>;80def : Proc<"M68020", [ FeatureISA20 ]>;81def : Proc<"M68030", [ FeatureISA30 ]>;82def : Proc<"M68040", [ FeatureISA40 ]>;83def : Proc<"M68060", [ FeatureISA60 ]>;84 85//===----------------------------------------------------------------------===//86// Register File Description87//===----------------------------------------------------------------------===//88 89include "M68kRegisterInfo.td"90include "GISel/M68kRegisterBanks.td"91 92//===----------------------------------------------------------------------===//93// Instruction Descriptions94//===----------------------------------------------------------------------===//95 96include "M68kInstrInfo.td"97 98defm : RemapAllTargetPseudoPointerOperands<AR16>;99 100def M68kInstrInfo : InstrInfo;101 102//===----------------------------------------------------------------------===//103// Calling Conventions104//===----------------------------------------------------------------------===//105 106include "M68kCallingConv.td"107 108//===---------------------------------------------------------------------===//109// Assembly Printers110//===---------------------------------------------------------------------===//111 112def M68kAsmWriter : AsmWriter {113 string AsmWriterClassName = "InstPrinter";114 bit isMCAsmWriter = 1;115}116 117//===---------------------------------------------------------------------===//118// Assembly Parsers119//===---------------------------------------------------------------------===//120 121def M68kAsmParser : AsmParser {122 let ShouldEmitMatchRegisterName = 0;123 let ShouldEmitMatchRegisterAltName = 0;124}125 126def M68kAsmParserVariant : AsmParserVariant {127 int Variant = 0;128}129 130//===----------------------------------------------------------------------===//131// Target132//===----------------------------------------------------------------------===//133 134def M68k : Target {135 let InstructionSet = M68kInstrInfo;136 let AssemblyParsers = [M68kAsmParser];137 let AssemblyWriters = [M68kAsmWriter];138}139