Home | History | Annotate | Download | only in AArch64
      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 }
     71