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 24263509Sdimdef FeatureFPARMv8 : SubtargetFeature<"fp-armv8", "HasFPARMv8", "true", 25263509Sdim "Enable ARMv8 FP">; 26263509Sdim 27249259Sdimdef FeatureNEON : SubtargetFeature<"neon", "HasNEON", "true", 28263509Sdim "Enable Advanced SIMD instructions", [FeatureFPARMv8]>; 29249259Sdim 30249259Sdimdef FeatureCrypto : SubtargetFeature<"crypto", "HasCrypto", "true", 31249259Sdim "Enable cryptographic instructions">; 32249259Sdim 33249259Sdim//===----------------------------------------------------------------------===// 34249259Sdim// AArch64 Processors 35249259Sdim// 36249259Sdim 37249259Sdiminclude "AArch64Schedule.td" 38249259Sdim 39263509Sdimdef : Processor<"generic", GenericItineraries, [FeatureFPARMv8]>; 40249259Sdim 41249259Sdim//===----------------------------------------------------------------------===// 42249259Sdim// Register File Description 43249259Sdim//===----------------------------------------------------------------------===// 44249259Sdim 45249259Sdiminclude "AArch64RegisterInfo.td" 46249259Sdim 47249259Sdiminclude "AArch64CallingConv.td" 48249259Sdim 49249259Sdim//===----------------------------------------------------------------------===// 50249259Sdim// Instruction Descriptions 51249259Sdim//===----------------------------------------------------------------------===// 52249259Sdim 53249259Sdiminclude "AArch64InstrInfo.td" 54249259Sdim 55249259Sdimdef AArch64InstrInfo : InstrInfo; 56249259Sdim 57249259Sdim//===----------------------------------------------------------------------===// 58249259Sdim// Assembly printer 59249259Sdim//===----------------------------------------------------------------------===// 60249259Sdim 61249259Sdimdef A64InstPrinter : AsmWriter { 62249259Sdim string AsmWriterClassName = "InstPrinter"; 63249259Sdim bit isMCAsmWriter = 1; 64249259Sdim} 65249259Sdim 66249259Sdim//===----------------------------------------------------------------------===// 67249259Sdim// Declare the target which we are implementing 68249259Sdim//===----------------------------------------------------------------------===// 69249259Sdim 70249259Sdimdef AArch64 : Target { 71249259Sdim let InstructionSet = AArch64InstrInfo; 72249259Sdim let AssemblyWriters = [A64InstPrinter]; 73249259Sdim} 74