1249259Sdim//===-- AArch64Subtarget.cpp - AArch64 Subtarget Information --------------===// 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 file implements the AArch64 specific subclass of TargetSubtargetInfo. 11249259Sdim// 12249259Sdim//===----------------------------------------------------------------------===// 13249259Sdim 14249259Sdim#include "AArch64Subtarget.h" 15249259Sdim#include "AArch64RegisterInfo.h" 16249259Sdim#include "MCTargetDesc/AArch64MCTargetDesc.h" 17249259Sdim#include "llvm/IR/GlobalValue.h" 18249259Sdim#include "llvm/Target/TargetSubtargetInfo.h" 19249259Sdim#include "llvm/Support/CommandLine.h" 20249259Sdim#include "llvm/ADT/SmallVector.h" 21249259Sdim 22249259Sdim#define GET_SUBTARGETINFO_TARGET_DESC 23249259Sdim#define GET_SUBTARGETINFO_CTOR 24249259Sdim#include "AArch64GenSubtargetInfo.inc" 25249259Sdim 26249259Sdimusing namespace llvm; 27249259Sdim 28249259SdimAArch64Subtarget::AArch64Subtarget(StringRef TT, StringRef CPU, StringRef FS) 29249259Sdim : AArch64GenSubtargetInfo(TT, CPU, FS) 30249259Sdim , HasNEON(true) 31249259Sdim , HasCrypto(true) 32249259Sdim , TargetTriple(TT) { 33249259Sdim 34249259Sdim ParseSubtargetFeatures(CPU, FS); 35249259Sdim} 36249259Sdim 37249259Sdimbool AArch64Subtarget::GVIsIndirectSymbol(const GlobalValue *GV, 38249259Sdim Reloc::Model RelocM) const { 39249259Sdim if (RelocM == Reloc::Static) 40249259Sdim return false; 41249259Sdim 42249259Sdim return !GV->hasLocalLinkage() && !GV->hasHiddenVisibility(); 43249259Sdim} 44