AArch64.td revision 249259
1249259Sdim//===- AArch64.td - Describe the AArch64 Target Machine -------*- tblgen -*-==//
2249259Sdim//
3249259Sdim//                     The LLVM Compiler Infrastructure
4249259Sdim//
5249259Sdim// This file is distributed under the University of Illinois Open Source
6249259Sdim// License. See LICENSE.TXT for details.
7249259Sdim//
8249259Sdim//===----------------------------------------------------------------------===//
9249259Sdim//
10249259Sdim// This is the top level entry point for the AArch64 target.
11249259Sdim//
12249259Sdim//===----------------------------------------------------------------------===//
13249259Sdim
14249259Sdim//===----------------------------------------------------------------------===//
15249259Sdim// Target-independent interfaces
16249259Sdim//===----------------------------------------------------------------------===//
17249259Sdim
18249259Sdiminclude "llvm/Target/Target.td"
19249259Sdim
20249259Sdim//===----------------------------------------------------------------------===//
21249259Sdim// AArch64 Subtarget features.
22249259Sdim//
23249259Sdim
24249259Sdimdef FeatureNEON : SubtargetFeature<"neon", "HasNEON", "true",
25249259Sdim  "Enable Advanced SIMD instructions">;
26249259Sdim
27249259Sdimdef FeatureCrypto : SubtargetFeature<"crypto", "HasCrypto", "true",
28249259Sdim  "Enable cryptographic instructions">;
29249259Sdim
30249259Sdim//===----------------------------------------------------------------------===//
31249259Sdim// AArch64 Processors
32249259Sdim//
33249259Sdim
34249259Sdiminclude "AArch64Schedule.td"
35249259Sdim
36249259Sdimdef : Processor<"generic", GenericItineraries, [FeatureNEON, FeatureCrypto]>;
37249259Sdim
38249259Sdim//===----------------------------------------------------------------------===//
39249259Sdim// Register File Description
40249259Sdim//===----------------------------------------------------------------------===//
41249259Sdim
42249259Sdiminclude "AArch64RegisterInfo.td"
43249259Sdim
44249259Sdiminclude "AArch64CallingConv.td"
45249259Sdim
46249259Sdim//===----------------------------------------------------------------------===//
47249259Sdim// Instruction Descriptions
48249259Sdim//===----------------------------------------------------------------------===//
49249259Sdim
50249259Sdiminclude "AArch64InstrInfo.td"
51249259Sdim
52249259Sdimdef AArch64InstrInfo : InstrInfo;
53249259Sdim
54249259Sdim//===----------------------------------------------------------------------===//
55249259Sdim// Assembly printer
56249259Sdim//===----------------------------------------------------------------------===//
57249259Sdim
58249259Sdimdef A64InstPrinter : AsmWriter {
59249259Sdim  string AsmWriterClassName = "InstPrinter";
60249259Sdim  bit isMCAsmWriter = 1;
61249259Sdim}
62249259Sdim
63249259Sdim//===----------------------------------------------------------------------===//
64249259Sdim// Declare the target which we are implementing
65249259Sdim//===----------------------------------------------------------------------===//
66249259Sdim
67249259Sdimdef AArch64 : Target {
68249259Sdim  let InstructionSet = AArch64InstrInfo;
69249259Sdim  let AssemblyWriters = [A64InstPrinter];
70249259Sdim}
71