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