1 //===-- M68k.td - Motorola 680x0 target definitions --------*- tablegen -*-===//
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
7 //===----------------------------------------------------------------------===//
10 /// This is a target description file for the Motorola 680x0 family, referred
11 /// to here as the "M68k" architecture.
13 //===----------------------------------------------------------------------===//
15 include "llvm/Target/Target.td"
17 //===----------------------------------------------------------------------===//
18 // M68k Subtarget features
19 //===----------------------------------------------------------------------===//
22 : SubtargetFeature<"isa-68000", "SubtargetKind", "M00",
23 "Is M68000 ISA supported">;
26 : SubtargetFeature<"isa-68010", "SubtargetKind", "M10",
27 "Is M68010 ISA supported",
31 : SubtargetFeature<"isa-68020", "SubtargetKind", "M20",
32 "Is M68020 ISA supported",
36 : SubtargetFeature<"isa-68030", "SubtargetKind", "M30",
37 "Is M68030 ISA supported",
41 : SubtargetFeature<"isa-68881", "FPUKind", "M881",
42 "Is M68881 (FPU) ISA supported">;
45 : SubtargetFeature<"isa-68882", "FPUKind", "M882",
46 "Is M68882 (FPU) ISA supported",
50 : SubtargetFeature<"isa-68040", "SubtargetKind", "M40",
51 "Is M68040 ISA supported",
52 [ FeatureISA30, FeatureISA882 ]>;
55 : SubtargetFeature<"isa-68060", "SubtargetKind", "M60",
56 "Is M68060 ISA supported",
60 def FeatureReserveA#i :
61 SubtargetFeature<"reserve-a"#i, "UserReservedRegister[M68k::A"#i#"]",
62 "true", "Reserve A"#i#" register">;
64 def FeatureReserveD#i :
65 SubtargetFeature<"reserve-d"#i, "UserReservedRegister[M68k::D"#i#"]",
66 "true", "Reserve D"#i#" register">;
68 //===----------------------------------------------------------------------===//
69 // M68k processors supported.
70 //===----------------------------------------------------------------------===//
72 include "M68kSchedule.td"
74 class Proc<string Name, list<SubtargetFeature> Features>
75 : ProcessorModel<Name, GenericM68kModel, Features>;
77 def : Proc<"generic", [ FeatureISA00 ]>;
78 def : Proc<"M68000", [ FeatureISA00 ]>;
79 def : Proc<"M68010", [ FeatureISA10 ]>;
80 def : Proc<"M68020", [ FeatureISA20 ]>;
81 def : Proc<"M68030", [ FeatureISA30 ]>;
82 def : Proc<"M68040", [ FeatureISA40 ]>;
83 def : Proc<"M68060", [ FeatureISA60 ]>;
85 //===----------------------------------------------------------------------===//
86 // Register File Description
87 //===----------------------------------------------------------------------===//
89 include "M68kRegisterInfo.td"
90 include "GISel/M68kRegisterBanks.td"
92 //===----------------------------------------------------------------------===//
93 // Instruction Descriptions
94 //===----------------------------------------------------------------------===//
96 include "M68kInstrInfo.td"
98 def M68kInstrInfo : InstrInfo;
100 //===----------------------------------------------------------------------===//
101 // Calling Conventions
102 //===----------------------------------------------------------------------===//
104 include "M68kCallingConv.td"
106 //===---------------------------------------------------------------------===//
108 //===---------------------------------------------------------------------===//
110 def M68kAsmWriter : AsmWriter {
111 string AsmWriterClassName = "InstPrinter";
112 bit isMCAsmWriter = 1;
115 //===---------------------------------------------------------------------===//
117 //===---------------------------------------------------------------------===//
119 def M68kAsmParser : AsmParser {
120 let ShouldEmitMatchRegisterName = 0;
121 let ShouldEmitMatchRegisterAltName = 0;
124 def M68kAsmParserVariant : AsmParserVariant {
128 //===----------------------------------------------------------------------===//
130 //===----------------------------------------------------------------------===//
133 let InstructionSet = M68kInstrInfo;
134 let AssemblyParsers = [M68kAsmParser];
135 let AssemblyWriters = [M68kAsmWriter];