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