172062f5744557e270a38192554c3126ea5f97434Tim Northover//===-- AArch64Subtarget.cpp - AArch64 Subtarget Information --------------===// 272062f5744557e270a38192554c3126ea5f97434Tim Northover// 372062f5744557e270a38192554c3126ea5f97434Tim Northover// The LLVM Compiler Infrastructure 472062f5744557e270a38192554c3126ea5f97434Tim Northover// 572062f5744557e270a38192554c3126ea5f97434Tim Northover// This file is distributed under the University of Illinois Open Source 672062f5744557e270a38192554c3126ea5f97434Tim Northover// License. See LICENSE.TXT for details. 772062f5744557e270a38192554c3126ea5f97434Tim Northover// 872062f5744557e270a38192554c3126ea5f97434Tim Northover//===----------------------------------------------------------------------===// 972062f5744557e270a38192554c3126ea5f97434Tim Northover// 1072062f5744557e270a38192554c3126ea5f97434Tim Northover// This file implements the AArch64 specific subclass of TargetSubtargetInfo. 1172062f5744557e270a38192554c3126ea5f97434Tim Northover// 1272062f5744557e270a38192554c3126ea5f97434Tim Northover//===----------------------------------------------------------------------===// 1372062f5744557e270a38192554c3126ea5f97434Tim Northover 1472062f5744557e270a38192554c3126ea5f97434Tim Northover#include "AArch64Subtarget.h" 1572062f5744557e270a38192554c3126ea5f97434Tim Northover#include "AArch64RegisterInfo.h" 1672062f5744557e270a38192554c3126ea5f97434Tim Northover#include "MCTargetDesc/AArch64MCTargetDesc.h" 1772062f5744557e270a38192554c3126ea5f97434Tim Northover#include "llvm/IR/GlobalValue.h" 1872062f5744557e270a38192554c3126ea5f97434Tim Northover#include "llvm/Target/TargetSubtargetInfo.h" 1972062f5744557e270a38192554c3126ea5f97434Tim Northover#include "llvm/Support/CommandLine.h" 2072062f5744557e270a38192554c3126ea5f97434Tim Northover#include "llvm/ADT/SmallVector.h" 2172062f5744557e270a38192554c3126ea5f97434Tim Northover 2272062f5744557e270a38192554c3126ea5f97434Tim Northover#define GET_SUBTARGETINFO_TARGET_DESC 2372062f5744557e270a38192554c3126ea5f97434Tim Northover#define GET_SUBTARGETINFO_CTOR 2472062f5744557e270a38192554c3126ea5f97434Tim Northover#include "AArch64GenSubtargetInfo.inc" 2572062f5744557e270a38192554c3126ea5f97434Tim Northover 2672062f5744557e270a38192554c3126ea5f97434Tim Northoverusing namespace llvm; 2772062f5744557e270a38192554c3126ea5f97434Tim Northover 2872062f5744557e270a38192554c3126ea5f97434Tim NorthoverAArch64Subtarget::AArch64Subtarget(StringRef TT, StringRef CPU, StringRef FS) 2972062f5744557e270a38192554c3126ea5f97434Tim Northover : AArch64GenSubtargetInfo(TT, CPU, FS) 3072062f5744557e270a38192554c3126ea5f97434Tim Northover , HasNEON(true) 3172062f5744557e270a38192554c3126ea5f97434Tim Northover , HasCrypto(true) 3272062f5744557e270a38192554c3126ea5f97434Tim Northover , TargetTriple(TT) { 3372062f5744557e270a38192554c3126ea5f97434Tim Northover 3472062f5744557e270a38192554c3126ea5f97434Tim Northover ParseSubtargetFeatures(CPU, FS); 3572062f5744557e270a38192554c3126ea5f97434Tim Northover} 3672062f5744557e270a38192554c3126ea5f97434Tim Northover 3772062f5744557e270a38192554c3126ea5f97434Tim Northoverbool AArch64Subtarget::GVIsIndirectSymbol(const GlobalValue *GV, 3872062f5744557e270a38192554c3126ea5f97434Tim Northover Reloc::Model RelocM) const { 3972062f5744557e270a38192554c3126ea5f97434Tim Northover if (RelocM == Reloc::Static) 4072062f5744557e270a38192554c3126ea5f97434Tim Northover return false; 4172062f5744557e270a38192554c3126ea5f97434Tim Northover 4272062f5744557e270a38192554c3126ea5f97434Tim Northover return !GV->hasLocalLinkage() && !GV->hasHiddenVisibility(); 4372062f5744557e270a38192554c3126ea5f97434Tim Northover} 44