#ifndef LLVM_TARGETPARSER_ARMTARGETPARSER_H
#define LLVM_TARGETPARSER_ARMTARGETPARSER_H
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/ARMBuildAttributes.h"
#include "llvm/TargetParser/ARMTargetParserCommon.h"
#include <vector>
namespace llvm {
class Triple;
namespace ARM {
enum ArchExtKind : uint64_t { … };
struct ExtName { … };
const ExtName ARCHExtNames[] = …;
const struct { … } HWDivNames[] = …;
enum class ArchKind { … };
struct CpuNames { … };
const CpuNames CPUNames[] = …;
enum FPUKind { … };
enum class FPUVersion { … };
enum class FPURestriction { … };
inline bool isDoublePrecision(const FPURestriction restriction) { … }
inline bool has32Regs(const FPURestriction restriction) { … }
enum class NeonSupportLevel { … };
enum class ProfileKind { … };
struct FPUName { … };
static const FPUName FPUNames[] = …;
struct ArchNames { … };
static const ArchNames ARMArchNames[] = …;
inline ArchKind &operator--(ArchKind &Kind) { … }
StringRef getFPUName(FPUKind FPUKind);
FPUVersion getFPUVersion(FPUKind FPUKind);
NeonSupportLevel getFPUNeonSupportLevel(FPUKind FPUKind);
FPURestriction getFPURestriction(FPUKind FPUKind);
bool getFPUFeatures(FPUKind FPUKind, std::vector<StringRef> &Features);
bool getHWDivFeatures(uint64_t HWDivKind, std::vector<StringRef> &Features);
bool getExtensionFeatures(uint64_t Extensions,
std::vector<StringRef> &Features);
StringRef getArchName(ArchKind AK);
unsigned getArchAttr(ArchKind AK);
StringRef getCPUAttr(ArchKind AK);
StringRef getSubArch(ArchKind AK);
StringRef getArchExtName(uint64_t ArchExtKind);
StringRef getArchExtFeature(StringRef ArchExt);
bool appendArchExtFeatures(StringRef CPU, ARM::ArchKind AK, StringRef ArchExt,
std::vector<StringRef> &Features,
FPUKind &ArgFPUKind);
ArchKind convertV9toV8(ArchKind AK);
FPUKind getDefaultFPU(StringRef CPU, ArchKind AK);
uint64_t getDefaultExtensions(StringRef CPU, ArchKind AK);
StringRef getDefaultCPU(StringRef Arch);
StringRef getCanonicalArchName(StringRef Arch);
StringRef getFPUSynonym(StringRef FPU);
uint64_t parseHWDiv(StringRef HWDiv);
FPUKind parseFPU(StringRef FPU);
ArchKind parseArch(StringRef Arch);
uint64_t parseArchExt(StringRef ArchExt);
ArchKind parseCPUArch(StringRef CPU);
ProfileKind parseArchProfile(StringRef Arch);
unsigned parseArchVersion(StringRef Arch);
void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values);
StringRef computeDefaultTargetABI(const Triple &TT, StringRef CPU);
StringRef getARMCPUForArch(const llvm::Triple &Triple, StringRef MArch = { … };
void PrintSupportedExtensions(StringMap<StringRef> DescMap);
}
}
#endif