diff options
Diffstat (limited to 'llvm/lib/Target/ARM')
-rw-r--r-- | llvm/lib/Target/ARM/ARMArchExtName.def | 30 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMArchExtName.h | 26 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMFPUName.def | 34 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/ARMFPUName.h | 26 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 26 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.def | 53 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.h | 27 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp | 88 |
9 files changed, 20 insertions, 293 deletions
diff --git a/llvm/lib/Target/ARM/ARMArchExtName.def b/llvm/lib/Target/ARM/ARMArchExtName.def deleted file mode 100644 index d6da50c59e5..00000000000 --- a/llvm/lib/Target/ARM/ARMArchExtName.def +++ /dev/null @@ -1,30 +0,0 @@ -//===-- ARMArchExtName.def - List of the ARM Extension names ----*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file contains the list of the supported ARM Architecture Extension -// names. These can be used to enable the extension through .arch_extension -// attribute -// -//===----------------------------------------------------------------------===// - -// NOTE: NO INCLUDE GUARD DESIRED! - -#ifndef ARM_ARCHEXT_NAME -#error "You must define ARM_ARCHEXT_NAME(NAME, ID) before including ARMArchExtName.h" -#endif - -ARM_ARCHEXT_NAME("crc", CRC) -ARM_ARCHEXT_NAME("crypto", CRYPTO) -ARM_ARCHEXT_NAME("fp", FP) -ARM_ARCHEXT_NAME("idiv", HWDIV) -ARM_ARCHEXT_NAME("mp", MP) -ARM_ARCHEXT_NAME("sec", SEC) -ARM_ARCHEXT_NAME("virt", VIRT) - -#undef ARM_ARCHEXT_NAME diff --git a/llvm/lib/Target/ARM/ARMArchExtName.h b/llvm/lib/Target/ARM/ARMArchExtName.h deleted file mode 100644 index bc1157acdbe..00000000000 --- a/llvm/lib/Target/ARM/ARMArchExtName.h +++ /dev/null @@ -1,26 +0,0 @@ -//===-- ARMArchExtName.h - List of the ARM Extension names ------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_LIB_TARGET_ARM_ARMARCHEXTNAME_H -#define LLVM_LIB_TARGET_ARM_ARMARCHEXTNAME_H - -namespace llvm { -namespace ARM { - -enum ArchExtKind { - INVALID_ARCHEXT = 0 - -#define ARM_ARCHEXT_NAME(NAME, ID) , ID -#include "ARMArchExtName.def" -}; - -} // namespace ARM -} // namespace llvm - -#endif diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 4d949f48775..8fd6c137395 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -15,8 +15,6 @@ #include "ARMAsmPrinter.h" #include "ARM.h" #include "ARMConstantPoolValue.h" -#include "ARMFPUName.h" -#include "ARMArchExtName.h" #include "ARMMachineFunctionInfo.h" #include "ARMTargetMachine.h" #include "ARMTargetObjectFile.h" @@ -45,6 +43,7 @@ #include "llvm/MC/MCStreamer.h" #include "llvm/MC/MCSymbol.h" #include "llvm/Support/ARMBuildAttributes.h" +#include "llvm/Support/TargetParser.h" #include "llvm/Support/COFF.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" diff --git a/llvm/lib/Target/ARM/ARMFPUName.def b/llvm/lib/Target/ARM/ARMFPUName.def deleted file mode 100644 index 34ce85d280e..00000000000 --- a/llvm/lib/Target/ARM/ARMFPUName.def +++ /dev/null @@ -1,34 +0,0 @@ -//===-- ARMFPUName.def - List of the ARM FPU names --------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file contains the list of the supported ARM FPU names. -// -//===----------------------------------------------------------------------===// - -// NOTE: NO INCLUDE GUARD DESIRED! - -#ifndef ARM_FPU_NAME -#error "You must define ARM_FPU_NAME(NAME, ID) before including ARMFPUName.h" -#endif - -ARM_FPU_NAME("vfp", VFP) -ARM_FPU_NAME("vfpv2", VFPV2) -ARM_FPU_NAME("vfpv3", VFPV3) -ARM_FPU_NAME("vfpv3-d16", VFPV3_D16) -ARM_FPU_NAME("vfpv4", VFPV4) -ARM_FPU_NAME("vfpv4-d16", VFPV4_D16) -ARM_FPU_NAME("fpv5-d16", FPV5_D16) -ARM_FPU_NAME("fp-armv8", FP_ARMV8) -ARM_FPU_NAME("neon", NEON) -ARM_FPU_NAME("neon-vfpv4", NEON_VFPV4) -ARM_FPU_NAME("neon-fp-armv8", NEON_FP_ARMV8) -ARM_FPU_NAME("crypto-neon-fp-armv8", CRYPTO_NEON_FP_ARMV8) -ARM_FPU_NAME("softvfp", SOFTVFP) - -#undef ARM_FPU_NAME diff --git a/llvm/lib/Target/ARM/ARMFPUName.h b/llvm/lib/Target/ARM/ARMFPUName.h deleted file mode 100644 index 86acffbc8f7..00000000000 --- a/llvm/lib/Target/ARM/ARMFPUName.h +++ /dev/null @@ -1,26 +0,0 @@ -//===-- ARMFPUName.h - List of the ARM FPU names ----------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_LIB_TARGET_ARM_ARMFPUNAME_H -#define LLVM_LIB_TARGET_ARM_ARMFPUNAME_H - -namespace llvm { -namespace ARM { - -enum FPUKind { - INVALID_FPU = 0 - -#define ARM_FPU_NAME(NAME, ID) , ID -#include "ARMFPUName.def" -}; - -} // namespace ARM -} // namespace llvm - -#endif diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index b9ad2c8bcd2..40854ce5ae1 100644 --- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -7,10 +7,8 @@ // //===----------------------------------------------------------------------===// -#include "ARMFPUName.h" #include "ARMFeatures.h" #include "MCTargetDesc/ARMAddressingModes.h" -#include "MCTargetDesc/ARMArchName.h" #include "MCTargetDesc/ARMBaseInfo.h" #include "MCTargetDesc/ARMMCExpr.h" #include "llvm/ADT/STLExtras.h" @@ -39,6 +37,7 @@ #include "llvm/MC/MCTargetAsmParser.h" #include "llvm/Support/ARMBuildAttributes.h" #include "llvm/Support/ARMEHABI.h" +#include "llvm/Support/TargetParser.h" #include "llvm/Support/COFF.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ELF.h" @@ -9040,13 +9039,7 @@ bool ARMAsmParser::parseDirectiveUnreq(SMLoc L) { bool ARMAsmParser::parseDirectiveArch(SMLoc L) { StringRef Arch = getParser().parseStringToEndOfStatement().trim(); - unsigned ID = StringSwitch<unsigned>(Arch) -#define ARM_ARCH_NAME(NAME, ID, DEFAULT_CPU_NAME, DEFAULT_CPU_ARCH) \ - .Case(NAME, ARM::ID) -#define ARM_ARCH_ALIAS(NAME, ID) \ - .Case(NAME, ARM::ID) -#include "MCTargetDesc/ARMArchName.def" - .Default(ARM::INVALID_ARCH); + unsigned ID = ARMTargetParser::parseArch(Arch); if (ID == ARM::INVALID_ARCH) { Error(L, "Unknown arch name"); @@ -9248,10 +9241,7 @@ bool ARMAsmParser::parseDirectiveFPU(SMLoc L) { SMLoc FPUNameLoc = getTok().getLoc(); StringRef FPU = getParser().parseStringToEndOfStatement().trim(); - unsigned ID = StringSwitch<unsigned>(FPU) -#define ARM_FPU_NAME(NAME, ID) .Case(NAME, ARM::ID) -#include "ARMFPUName.def" - .Default(ARM::INVALID_FPU); + unsigned ID = ARMTargetParser::parseFPU(FPU); if (ID == ARM::INVALID_FPU) { Error(FPUNameLoc, "Unknown FPU name"); @@ -9905,15 +9895,7 @@ bool ARMAsmParser::parseDirectiveObjectArch(SMLoc L) { SMLoc ArchLoc = Parser.getTok().getLoc(); getLexer().Lex(); - unsigned ID = StringSwitch<unsigned>(Arch) -#define ARM_ARCH_NAME(NAME, ID, DEFAULT_CPU_NAME, DEFAULT_CPU_ARCH) \ - .Case(NAME, ARM::ID) -#define ARM_ARCH_ALIAS(NAME, ID) \ - .Case(NAME, ARM::ID) -#include "MCTargetDesc/ARMArchName.def" -#undef ARM_ARCH_NAME -#undef ARM_ARCH_ALIAS - .Default(ARM::INVALID_ARCH); + unsigned ID = ARMTargetParser::parseArch(Arch); if (ID == ARM::INVALID_ARCH) { Error(ArchLoc, "unknown architecture '" + Arch + "'"); diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.def b/llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.def deleted file mode 100644 index 96a0c1a84c4..00000000000 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.def +++ /dev/null @@ -1,53 +0,0 @@ -//===-- ARMArchName.def - List of the ARM arch names ------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file contains the list of the supported ARM architecture names, -// i.e. the supported value for -march= option. -// -//===----------------------------------------------------------------------===// - -// NOTE: NO INCLUDE GUARD DESIRED! - -#ifndef ARM_ARCH_NAME -#error "You must define ARM_ARCH_NAME before including ARMArchName.def" -#endif - -// ARM_ARCH_NAME(NAME, ID, DEFAULT_CPU_NAME, DEFAULT_CPU_ARCH) -ARM_ARCH_NAME("armv2", ARMV2, "2", v4) -ARM_ARCH_NAME("armv2a", ARMV2A, "2A", v4) -ARM_ARCH_NAME("armv3", ARMV3, "3", v4) -ARM_ARCH_NAME("armv3m", ARMV3M, "3M", v4) -ARM_ARCH_NAME("armv4", ARMV4, "4", v4) -ARM_ARCH_NAME("armv4t", ARMV4T, "4T", v4T) -ARM_ARCH_NAME("armv5", ARMV5, "5", v5T) -ARM_ARCH_NAME("armv5t", ARMV5T, "5T", v5T) -ARM_ARCH_NAME("armv5te", ARMV5TE, "5TE", v5TE) -ARM_ARCH_NAME("armv6", ARMV6, "6", v6) -ARM_ARCH_NAME("armv6j", ARMV6J, "6J", v6) -ARM_ARCH_NAME("armv6k", ARMV6K, "6K", v6K) -ARM_ARCH_NAME("armv6t2", ARMV6T2, "6T2", v6T2) -ARM_ARCH_NAME("armv6z", ARMV6Z, "6Z", v6KZ) -ARM_ARCH_NAME("armv6zk", ARMV6ZK, "6ZK", v6KZ) -ARM_ARCH_NAME("armv6-m", ARMV6M, "6-M", v6_M) -ARM_ARCH_NAME("armv7", ARMV7, "7", v7) -ARM_ARCH_NAME("armv7-a", ARMV7A, "7-A", v7) -ARM_ARCH_ALIAS("armv7a", ARMV7A) -ARM_ARCH_NAME("armv7-r", ARMV7R, "7-R", v7) -ARM_ARCH_ALIAS("armv7r", ARMV7R) -ARM_ARCH_NAME("armv7-m", ARMV7M, "7-M", v7) -ARM_ARCH_ALIAS("armv7m", ARMV7M) -ARM_ARCH_NAME("armv8-a", ARMV8A, "8-A", v8) -ARM_ARCH_ALIAS("armv8a", ARMV8A) -ARM_ARCH_NAME("armv8.1-a", ARMV8_1A, "8.1-A", v8) -ARM_ARCH_ALIAS("armv8.1a", ARMV8_1A) -ARM_ARCH_NAME("iwmmxt", IWMMXT, "iwmmxt", v5TE) -ARM_ARCH_NAME("iwmmxt2", IWMMXT2, "iwmmxt2", v5TE) - -#undef ARM_ARCH_NAME -#undef ARM_ARCH_ALIAS diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.h b/llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.h deleted file mode 100644 index bc056737a82..00000000000 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMArchName.h +++ /dev/null @@ -1,27 +0,0 @@ -//===-- ARMArchName.h - List of the ARM arch names --------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMARCHNAME_H -#define LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMARCHNAME_H - -namespace llvm { -namespace ARM { - -enum ArchKind { - INVALID_ARCH = 0 - -#define ARM_ARCH_NAME(NAME, ID, DEFAULT_CPU_NAME, DEFAULT_CPU_ARCH) , ID -#define ARM_ARCH_ALIAS(NAME, ID) /* empty */ -#include "ARMArchName.def" -}; - -} // namespace ARM -} // namespace llvm - -#endif diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp index e7c777e26f9..9709f30eef3 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -13,9 +13,6 @@ // //===----------------------------------------------------------------------===// -#include "ARMArchName.h" -#include "ARMFPUName.h" -#include "ARMArchExtName.h" #include "ARMRegisterInfo.h" #include "ARMUnwindOpAsm.h" #include "llvm/ADT/StringExtras.h" @@ -41,6 +38,7 @@ #include "llvm/MC/MCValue.h" #include "llvm/Support/ARMBuildAttributes.h" #include "llvm/Support/ARMEHABI.h" +#include "llvm/Support/TargetParser.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ELF.h" #include "llvm/Support/FormattedStream.h" @@ -56,69 +54,6 @@ static std::string GetAEABIUnwindPersonalityName(unsigned Index) { return (Twine("__aeabi_unwind_cpp_pr") + Twine(Index)).str(); } -static const char *GetFPUName(unsigned ID) { - switch (ID) { - default: - llvm_unreachable("Unknown FPU kind"); - break; -#define ARM_FPU_NAME(NAME, ID) case ARM::ID: return NAME; -#include "ARMFPUName.def" - } - return nullptr; -} - -static const char *GetArchName(unsigned ID) { - switch (ID) { - default: - llvm_unreachable("Unknown ARCH kind"); - break; -#define ARM_ARCH_NAME(NAME, ID, DEFAULT_CPU_NAME, DEFAULT_CPU_ARCH) \ - case ARM::ID: return NAME; -#define ARM_ARCH_ALIAS(NAME, ID) /* empty */ -#include "ARMArchName.def" - } - return nullptr; -} - -static const char *GetArchDefaultCPUName(unsigned ID) { - switch (ID) { - default: - llvm_unreachable("Unknown ARCH kind"); - break; -#define ARM_ARCH_NAME(NAME, ID, DEFAULT_CPU_NAME, DEFAULT_CPU_ARCH) \ - case ARM::ID: return DEFAULT_CPU_NAME; -#define ARM_ARCH_ALIAS(NAME, ID) /* empty */ -#include "ARMArchName.def" - } - return nullptr; -} - -static unsigned GetArchDefaultCPUArch(unsigned ID) { - switch (ID) { - default: - llvm_unreachable("Unknown ARCH kind"); - break; -#define ARM_ARCH_NAME(NAME, ID, DEFAULT_CPU_NAME, DEFAULT_CPU_ARCH) \ - case ARM::ID: return ARMBuildAttrs::DEFAULT_CPU_ARCH; -#define ARM_ARCH_ALIAS(NAME, ID) /* empty */ -#include "ARMArchName.def" - } - return 0; -} - -static const char *GetArchExtName(unsigned ID) { - switch (ID) { - default: - llvm_unreachable("Unknown ARCH Extension kind"); - break; -#define ARM_ARCHEXT_NAME(NAME, ID) \ - case ARM::ID: \ - return NAME; -#include "ARMArchExtName.def" - } - return nullptr; -} - namespace { class ARMELFStreamer; @@ -262,16 +197,16 @@ void ARMTargetAsmStreamer::emitIntTextAttribute(unsigned Attribute, OS << "\n"; } void ARMTargetAsmStreamer::emitArch(unsigned Arch) { - OS << "\t.arch\t" << GetArchName(Arch) << "\n"; + OS << "\t.arch\t" << ARMTargetParser::getArchName(Arch) << "\n"; } void ARMTargetAsmStreamer::emitArchExtension(unsigned ArchExt) { - OS << "\t.arch_extension\t" << GetArchExtName(ArchExt) << "\n"; + OS << "\t.arch_extension\t" << ARMTargetParser::getArchExtName(ArchExt) << "\n"; } void ARMTargetAsmStreamer::emitObjectArch(unsigned Arch) { - OS << "\t.object_arch\t" << GetArchName(Arch) << '\n'; + OS << "\t.object_arch\t" << ARMTargetParser::getArchName(Arch) << '\n'; } void ARMTargetAsmStreamer::emitFPU(unsigned FPU) { - OS << "\t.fpu\t" << GetFPUName(FPU) << "\n"; + OS << "\t.fpu\t" << ARMTargetParser::getFPUName(FPU) << "\n"; } void ARMTargetAsmStreamer::finishAttributeSection() { } @@ -753,11 +688,18 @@ void ARMTargetELFStreamer::emitObjectArch(unsigned Value) { void ARMTargetELFStreamer::emitArchDefaultAttributes() { using namespace ARMBuildAttrs; - setAttributeItem(CPU_name, GetArchDefaultCPUName(Arch), false); + setAttributeItem(CPU_name, + ARMTargetParser::getArchDefaultCPUName(Arch), + false); + if (EmittedArch == ARM::INVALID_ARCH) - setAttributeItem(CPU_arch, GetArchDefaultCPUArch(Arch), false); + setAttributeItem(CPU_arch, + ARMTargetParser::getArchDefaultCPUArch(Arch), + false); else - setAttributeItem(CPU_arch, GetArchDefaultCPUArch(EmittedArch), false); + setAttributeItem(CPU_arch, + ARMTargetParser::getArchDefaultCPUArch(EmittedArch), + false); switch (Arch) { case ARM::ARMV2: |