mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
974a445bd9
subsequent changes are easier to review. About to fix some layering issues, and wanted to separate out the necessary churn. Also comment and sink the include of "Windows.h" in three .inc files to match the usage in Memory.inc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198685 91177308-0d34-0410-b5e6-96231b3b80d8
62 lines
1.8 KiB
C++
62 lines
1.8 KiB
C++
//===-- AArch64Subtarget.cpp - AArch64 Subtarget Information --------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements the AArch64 specific subclass of TargetSubtargetInfo.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "AArch64Subtarget.h"
|
|
#include "AArch64RegisterInfo.h"
|
|
#include "MCTargetDesc/AArch64MCTargetDesc.h"
|
|
#include "llvm/ADT/SmallVector.h"
|
|
#include "llvm/IR/GlobalValue.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
#include "llvm/Target/TargetSubtargetInfo.h"
|
|
|
|
#define GET_SUBTARGETINFO_TARGET_DESC
|
|
#define GET_SUBTARGETINFO_CTOR
|
|
#include "AArch64GenSubtargetInfo.inc"
|
|
|
|
using namespace llvm;
|
|
|
|
// Pin the vtable to this file.
|
|
void AArch64Subtarget::anchor() {}
|
|
|
|
AArch64Subtarget::AArch64Subtarget(StringRef TT, StringRef CPU, StringRef FS)
|
|
: AArch64GenSubtargetInfo(TT, CPU, FS), HasFPARMv8(false), HasNEON(false),
|
|
HasCrypto(false), TargetTriple(TT), CPUString(CPU) {
|
|
|
|
initializeSubtargetFeatures(CPU, FS);
|
|
}
|
|
|
|
void AArch64Subtarget::initializeSubtargetFeatures(StringRef CPU,
|
|
StringRef FS) {
|
|
if (CPU.empty())
|
|
CPUString = "generic";
|
|
|
|
std::string FullFS = FS;
|
|
if (CPUString == "generic") {
|
|
// Enable FP by default.
|
|
if (FullFS.empty())
|
|
FullFS = "+fp-armv8";
|
|
else
|
|
FullFS = "+fp-armv8," + FullFS;
|
|
}
|
|
|
|
ParseSubtargetFeatures(CPU, FullFS);
|
|
}
|
|
|
|
bool AArch64Subtarget::GVIsIndirectSymbol(const GlobalValue *GV,
|
|
Reloc::Model RelocM) const {
|
|
if (RelocM == Reloc::Static)
|
|
return false;
|
|
|
|
return !GV->hasLocalLinkage() && !GV->hasHiddenVisibility();
|
|
}
|