#include "ARM.h"
#include "clang/Driver/Driver.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/Options.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Option/ArgList.h"
#include "llvm/TargetParser/ARMTargetParser.h"
#include "llvm/TargetParser/Host.h"
usingnamespaceclang::driver;
usingnamespaceclang::driver::tools;
usingnamespaceclang;
usingnamespacellvm::opt;
int arm::getARMSubArchVersionNumber(const llvm::Triple &Triple) { … }
bool arm::isARMMProfile(const llvm::Triple &Triple) { … }
bool arm::isARMBigEndian(const llvm::Triple &Triple, const ArgList &Args) { … }
bool arm::isARMAProfile(const llvm::Triple &Triple) { … }
void arm::getARMArchCPUFromArgs(const ArgList &Args, llvm::StringRef &Arch,
llvm::StringRef &CPU, bool FromAs) { … }
static void getARMHWDivFeatures(const Driver &D, const Arg *A,
const ArgList &Args, StringRef HWDiv,
std::vector<StringRef> &Features) { … }
static llvm::ARM::FPUKind getARMFPUFeatures(const Driver &D, const Arg *A,
const ArgList &Args, StringRef FPU,
std::vector<StringRef> &Features) { … }
static bool DecodeARMFeatures(const Driver &D, StringRef text, StringRef CPU,
llvm::ARM::ArchKind ArchKind,
std::vector<StringRef> &Features,
llvm::ARM::FPUKind &ArgFPUKind) { … }
static void DecodeARMFeaturesFromCPU(const Driver &D, StringRef CPU,
std::vector<StringRef> &Features) { … }
static void checkARMArchName(const Driver &D, const Arg *A, const ArgList &Args,
llvm::StringRef ArchName, llvm::StringRef CPUName,
std::vector<StringRef> &Features,
const llvm::Triple &Triple,
llvm::ARM::FPUKind &ArgFPUKind) { … }
static void checkARMCPUName(const Driver &D, const Arg *A, const ArgList &Args,
llvm::StringRef CPUName, llvm::StringRef ArchName,
std::vector<StringRef> &Features,
const llvm::Triple &Triple,
llvm::ARM::FPUKind &ArgFPUKind) { … }
static void checkARMFloatABI(const Driver &D, const ArgList &Args,
bool HasFPRegs) { … }
bool arm::useAAPCSForMachO(const llvm::Triple &T) { … }
bool arm::isHardTPSupported(const llvm::Triple &Triple) { … }
arm::ReadTPMode arm::getReadTPMode(const Driver &D, const ArgList &Args,
const llvm::Triple &Triple, bool ForAS) { … }
void arm::setArchNameInTriple(const Driver &D, const ArgList &Args,
types::ID InputType, llvm::Triple &Triple) { … }
void arm::setFloatABIInTriple(const Driver &D, const ArgList &Args,
llvm::Triple &Triple) { … }
arm::FloatABI arm::getARMFloatABI(const ToolChain &TC, const ArgList &Args) { … }
arm::FloatABI arm::getDefaultFloatABI(const llvm::Triple &Triple) { … }
arm::FloatABI arm::getARMFloatABI(const Driver &D, const llvm::Triple &Triple,
const ArgList &Args) { … }
static bool hasIntegerMVE(const std::vector<StringRef> &F) { … }
llvm::ARM::FPUKind arm::getARMTargetFeatures(const Driver &D,
const llvm::Triple &Triple,
const ArgList &Args,
std::vector<StringRef> &Features,
bool ForAS, bool ForMultilib) { … }
std::string arm::getARMArch(StringRef Arch, const llvm::Triple &Triple) { … }
StringRef arm::getARMCPUForMArch(StringRef Arch, const llvm::Triple &Triple) { … }
std::string arm::getARMTargetCPU(StringRef CPU, StringRef Arch,
const llvm::Triple &Triple) { … }
llvm::ARM::ArchKind arm::getLLVMArchKindForARM(StringRef CPU, StringRef Arch,
const llvm::Triple &Triple) { … }
StringRef arm::getLLVMArchSuffixForARM(StringRef CPU, StringRef Arch,
const llvm::Triple &Triple) { … }
void arm::appendBE8LinkFlag(const ArgList &Args, ArgStringList &CmdArgs,
const llvm::Triple &Triple) { … }