ARM.h revision 317019
1317019Sdim//===--- ARM.h - ARM-specific (not AArch64) Tool Helpers --------*- C++ -*-===// 2317019Sdim// 3317019Sdim// The LLVM Compiler Infrastructure 4317019Sdim// 5317019Sdim// This file is distributed under the University of Illinois Open Source 6317019Sdim// License. See LICENSE.TXT for details. 7317019Sdim// 8317019Sdim//===----------------------------------------------------------------------===// 9317019Sdim 10317019Sdim#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_ARM_H 11317019Sdim#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_ARM_H 12317019Sdim 13317019Sdim#include "clang/Driver/ToolChain.h" 14317019Sdim#include "llvm/ADT/StringRef.h" 15317019Sdim#include "llvm/ADT/Triple.h" 16317019Sdim#include "llvm/Option/Option.h" 17317019Sdim#include <string> 18317019Sdim#include <vector> 19317019Sdim 20317019Sdimnamespace clang { 21317019Sdimnamespace driver { 22317019Sdimnamespace tools { 23317019Sdimnamespace arm { 24317019Sdim 25317019Sdimstd::string getARMTargetCPU(StringRef CPU, llvm::StringRef Arch, 26317019Sdim const llvm::Triple &Triple); 27317019Sdimconst std::string getARMArch(llvm::StringRef Arch, const llvm::Triple &Triple); 28317019SdimStringRef getARMCPUForMArch(llvm::StringRef Arch, const llvm::Triple &Triple); 29317019SdimStringRef getLLVMArchSuffixForARM(llvm::StringRef CPU, llvm::StringRef Arch, 30317019Sdim const llvm::Triple &Triple); 31317019Sdim 32317019Sdimvoid appendEBLinkFlags(const llvm::opt::ArgList &Args, 33317019Sdim llvm::opt::ArgStringList &CmdArgs, 34317019Sdim const llvm::Triple &Triple); 35317019Sdimenum class FloatABI { 36317019Sdim Invalid, 37317019Sdim Soft, 38317019Sdim SoftFP, 39317019Sdim Hard, 40317019Sdim}; 41317019Sdim 42317019SdimFloatABI getARMFloatABI(const ToolChain &TC, const llvm::opt::ArgList &Args); 43317019Sdim 44317019Sdimbool useAAPCSForMachO(const llvm::Triple &T); 45317019Sdimvoid getARMArchCPUFromArgs(const llvm::opt::ArgList &Args, 46317019Sdim llvm::StringRef &Arch, llvm::StringRef &CPU, 47317019Sdim bool FromAs = false); 48317019Sdimvoid getARMTargetFeatures(const ToolChain &TC, const llvm::Triple &Triple, 49317019Sdim const llvm::opt::ArgList &Args, 50317019Sdim llvm::opt::ArgStringList &CmdArgs, 51317019Sdim std::vector<llvm::StringRef> &Features, bool ForAS); 52317019Sdimint getARMSubArchVersionNumber(const llvm::Triple &Triple); 53317019Sdimbool isARMMProfile(const llvm::Triple &Triple); 54317019Sdim 55317019Sdim} // end namespace arm 56317019Sdim} // end namespace tools 57317019Sdim} // end namespace driver 58317019Sdim} // end namespace clang 59317019Sdim 60317019Sdim#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_ARM_H 61