1 //===-- ARM.td - Describe the ARM Target Machine -----------*- 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 //===----------------------------------------------------------------------===//
12 //===----------------------------------------------------------------------===//
13 // Target-independent interfaces which we are implementing
14 //===----------------------------------------------------------------------===//
16 include "llvm/Target/Target.td"
18 include "ARMFeatures.td"
19 include "ARMArchitectures.td"
21 //===----------------------------------------------------------------------===//
22 // Register File Description
23 //===----------------------------------------------------------------------===//
25 include "ARMRegisterInfo.td"
26 include "ARMRegisterBanks.td"
27 include "ARMCallingConv.td"
29 //===----------------------------------------------------------------------===//
31 //===----------------------------------------------------------------------===//
33 include "ARMPredicates.td"
34 include "ARMSchedule.td"
36 //===----------------------------------------------------------------------===//
37 // Instruction Descriptions
38 //===----------------------------------------------------------------------===//
40 include "ARMInstrInfo.td"
41 def ARMInstrInfo : InstrInfo;
43 //===----------------------------------------------------------------------===//
46 include "ARMScheduleV6.td"
47 include "ARMScheduleA8.td"
48 include "ARMScheduleA9.td"
49 include "ARMScheduleSwift.td"
50 include "ARMScheduleR52.td"
51 include "ARMScheduleA57.td"
52 include "ARMScheduleM4.td"
53 include "ARMScheduleM55.td"
54 include "ARMScheduleM7.td"
55 include "ARMScheduleM85.td"
57 include "ARMProcessors.td"
59 //===----------------------------------------------------------------------===//
60 // Declare the target which we are implementing
61 //===----------------------------------------------------------------------===//
63 def ARMAsmWriter : AsmWriter {
64 string AsmWriterClassName = "InstPrinter";
65 int PassSubtarget = 1;
67 bit isMCAsmWriter = 1;
70 def ARMAsmParser : AsmParser {
71 bit ReportMultipleNearMisses = 1;
72 let PreferSmallerInstructions = true;
75 def ARMAsmParserVariant : AsmParserVariant {
78 string BreakCharacters = ".";
82 // Pull in Instruction Info.
83 let InstructionSet = ARMInstrInfo;
84 let AssemblyWriters = [ARMAsmWriter];
85 let AssemblyParsers = [ARMAsmParser];
86 let AssemblyParserVariants = [ARMAsmParserVariant];
87 let AllowRegisterRenaming = 1;