]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/lib/Target/AArch64/AArch64.td
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / lib / Target / AArch64 / AArch64.td
1 //===- AArch64.td - Describe the AArch64 Target Machine -------*- tblgen -*-==//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This is the top level entry point for the AArch64 target.
11 //
12 //===----------------------------------------------------------------------===//
13
14 //===----------------------------------------------------------------------===//
15 // Target-independent interfaces
16 //===----------------------------------------------------------------------===//
17
18 include "llvm/Target/Target.td"
19
20 //===----------------------------------------------------------------------===//
21 // AArch64 Subtarget features.
22 //
23
24 def FeatureNEON : SubtargetFeature<"neon", "HasNEON", "true",
25   "Enable Advanced SIMD instructions">;
26
27 def FeatureCrypto : SubtargetFeature<"crypto", "HasCrypto", "true",
28   "Enable cryptographic instructions">;
29
30 //===----------------------------------------------------------------------===//
31 // AArch64 Processors
32 //
33
34 include "AArch64Schedule.td"
35
36 def : Processor<"generic", GenericItineraries, [FeatureNEON, FeatureCrypto]>;
37
38 //===----------------------------------------------------------------------===//
39 // Register File Description
40 //===----------------------------------------------------------------------===//
41
42 include "AArch64RegisterInfo.td"
43
44 include "AArch64CallingConv.td"
45
46 //===----------------------------------------------------------------------===//
47 // Instruction Descriptions
48 //===----------------------------------------------------------------------===//
49
50 include "AArch64InstrInfo.td"
51
52 def AArch64InstrInfo : InstrInfo;
53
54 //===----------------------------------------------------------------------===//
55 // Assembly printer
56 //===----------------------------------------------------------------------===//
57
58 def A64InstPrinter : AsmWriter {
59   string AsmWriterClassName = "InstPrinter";
60   bit isMCAsmWriter = 1;
61 }
62
63 //===----------------------------------------------------------------------===//
64 // Declare the target which we are implementing
65 //===----------------------------------------------------------------------===//
66
67 def AArch64 : Target {
68   let InstructionSet = AArch64InstrInfo;
69   let AssemblyWriters = [A64InstPrinter];
70 }