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