diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-12-20 14:16:56 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-12-20 14:16:56 +0000 | 
| commit | 2cab237b5dbfe1b3e9c7aa7a3c02d2b98fcf7462 (patch) | |
| tree | 524fe828571f81358bba62fdb6d04c6e5e96a2a4 /contrib/llvm/lib/Support/Triple.cpp | |
| parent | 6c7828a2807ea5e50c79ca42dbedf2b589ce63b2 (diff) | |
| parent | 044eb2f6afba375a914ac9d8024f8f5142bb912e (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/Support/Triple.cpp')
| -rw-r--r-- | contrib/llvm/lib/Support/Triple.cpp | 108 | 
1 files changed, 65 insertions, 43 deletions
diff --git a/contrib/llvm/lib/Support/Triple.cpp b/contrib/llvm/lib/Support/Triple.cpp index 2687a67556d3..4f0a30042b76 100644 --- a/contrib/llvm/lib/Support/Triple.cpp +++ b/contrib/llvm/lib/Support/Triple.cpp @@ -25,6 +25,7 @@ StringRef Triple::getArchTypeName(ArchType Kind) {    case aarch64_be:     return "aarch64_be";    case arm:            return "arm";    case armeb:          return "armeb"; +  case arc:            return "arc";    case avr:            return "avr";    case bpfel:          return "bpfel";    case bpfeb:          return "bpfeb"; @@ -83,6 +84,8 @@ StringRef Triple::getArchTypePrefix(ArchType Kind) {    case aarch64:    case aarch64_be:  return "aarch64"; +  case arc:         return "arc"; +    case arm:    case armeb:    case thumb: @@ -194,7 +197,6 @@ StringRef Triple::getOSTypeName(OSType Kind) {    case RTEMS: return "rtems";    case NaCl: return "nacl";    case CNK: return "cnk"; -  case Bitrig: return "bitrig";    case AIX: return "aix";    case CUDA: return "cuda";    case NVCL: return "nvcl"; @@ -205,6 +207,7 @@ StringRef Triple::getOSTypeName(OSType Kind) {    case WatchOS: return "watchos";    case Mesa3D: return "mesa3d";    case Contiki: return "contiki"; +  case AMDPAL: return "amdpal";    }    llvm_unreachable("Invalid OSType"); @@ -214,6 +217,7 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {    switch (Kind) {    case UnknownEnvironment: return "unknown";    case GNU: return "gnu"; +  case GNUABIN32: return "gnuabin32";    case GNUABI64: return "gnuabi64";    case GNUEABIHF: return "gnueabihf";    case GNUEABI: return "gnueabi"; @@ -231,6 +235,7 @@ StringRef Triple::getEnvironmentTypeName(EnvironmentType Kind) {    case AMDOpenCL: return "amdopencl";    case CoreCLR: return "coreclr";    case OpenCL: return "opencl"; +  case Simulator: return "simulator";    }    llvm_unreachable("Invalid EnvironmentType!"); @@ -256,6 +261,7 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) {    return StringSwitch<Triple::ArchType>(Name)      .Case("aarch64", aarch64)      .Case("aarch64_be", aarch64_be) +    .Case("arc", arc)      .Case("arm64", aarch64) // "arm64" is an alias for "aarch64"      .Case("arm", arm)      .Case("armeb", armeb) @@ -308,39 +314,46 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) {  }  static Triple::ArchType parseARMArch(StringRef ArchName) { -  unsigned ISA = ARM::parseArchISA(ArchName); -  unsigned ENDIAN = ARM::parseArchEndian(ArchName); +  ARM::ISAKind ISA = ARM::parseArchISA(ArchName); +  ARM::EndianKind ENDIAN = ARM::parseArchEndian(ArchName);    Triple::ArchType arch = Triple::UnknownArch;    switch (ENDIAN) { -  case ARM::EK_LITTLE: { +  case ARM::EndianKind::LITTLE: {      switch (ISA) { -    case ARM::IK_ARM: +    case ARM::ISAKind::ARM:        arch = Triple::arm;        break; -    case ARM::IK_THUMB: +    case ARM::ISAKind::THUMB:        arch = Triple::thumb;        break; -    case ARM::IK_AARCH64: +    case ARM::ISAKind::AARCH64:        arch = Triple::aarch64;        break; +    case ARM::ISAKind::INVALID: +      break;      }      break;    } -  case ARM::EK_BIG: { +  case ARM::EndianKind::BIG: {      switch (ISA) { -    case ARM::IK_ARM: +    case ARM::ISAKind::ARM:        arch = Triple::armeb;        break; -    case ARM::IK_THUMB: +    case ARM::ISAKind::THUMB:        arch = Triple::thumbeb;        break; -    case ARM::IK_AARCH64: +    case ARM::ISAKind::AARCH64:        arch = Triple::aarch64_be;        break; +    case ARM::ISAKind::INVALID: +      break;      }      break;    } +  case ARM::EndianKind::INVALID: { +    break; +  }    }    ArchName = ARM::getCanonicalArchName(ArchName); @@ -348,15 +361,15 @@ static Triple::ArchType parseARMArch(StringRef ArchName) {      return Triple::UnknownArch;    // Thumb only exists in v4+ -  if (ISA == ARM::IK_THUMB && +  if (ISA == ARM::ISAKind::THUMB &&        (ArchName.startswith("v2") || ArchName.startswith("v3")))      return Triple::UnknownArch;    // Thumb only for v6m -  unsigned Profile = ARM::parseArchProfile(ArchName); +  ARM::ProfileKind Profile = ARM::parseArchProfile(ArchName);    unsigned Version = ARM::parseArchVersion(ArchName); -  if (Profile == ARM::PK_M && Version == 6) { -    if (ENDIAN == ARM::EK_BIG) +  if (Profile == ARM::ProfileKind::M && Version == 6) { +    if (ENDIAN == ARM::EndianKind::BIG)        return Triple::thumbeb;      else        return Triple::thumb; @@ -378,6 +391,7 @@ static Triple::ArchType parseArch(StringRef ArchName) {      .Case("xscaleeb", Triple::armeb)      .Case("aarch64", Triple::aarch64)      .Case("aarch64_be", Triple::aarch64_be) +    .Case("arc", Triple::arc)      .Case("arm64", Triple::aarch64)      .Case("arm", Triple::arm)      .Case("armeb", Triple::armeb) @@ -477,7 +491,6 @@ static Triple::OSType parseOS(StringRef OSName) {      .StartsWith("rtems", Triple::RTEMS)      .StartsWith("nacl", Triple::NaCl)      .StartsWith("cnk", Triple::CNK) -    .StartsWith("bitrig", Triple::Bitrig)      .StartsWith("aix", Triple::AIX)      .StartsWith("cuda", Triple::CUDA)      .StartsWith("nvcl", Triple::NVCL) @@ -488,6 +501,7 @@ static Triple::OSType parseOS(StringRef OSName) {      .StartsWith("watchos", Triple::WatchOS)      .StartsWith("mesa3d", Triple::Mesa3D)      .StartsWith("contiki", Triple::Contiki) +    .StartsWith("amdpal", Triple::AMDPAL)      .Default(Triple::UnknownOS);  } @@ -495,6 +509,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {    return StringSwitch<Triple::EnvironmentType>(EnvironmentName)      .StartsWith("eabihf", Triple::EABIHF)      .StartsWith("eabi", Triple::EABI) +    .StartsWith("gnuabin32", Triple::GNUABIN32)      .StartsWith("gnuabi64", Triple::GNUABI64)      .StartsWith("gnueabihf", Triple::GNUEABIHF)      .StartsWith("gnueabi", Triple::GNUEABI) @@ -511,6 +526,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {      .StartsWith("amdopencl", Triple::AMDOpenCL)      .StartsWith("coreclr", Triple::CoreCLR)      .StartsWith("opencl", Triple::OpenCL) +    .StartsWith("simulator", Triple::Simulator)      .Default(Triple::UnknownEnvironment);  } @@ -536,51 +552,53 @@ static Triple::SubArchType parseSubArch(StringRef SubArchName) {    // ARM sub arch.    switch(ARM::parseArch(ARMSubArch)) { -  case ARM::AK_ARMV4: +  case ARM::ArchKind::ARMV4:      return Triple::NoSubArch; -  case ARM::AK_ARMV4T: +  case ARM::ArchKind::ARMV4T:      return Triple::ARMSubArch_v4t; -  case ARM::AK_ARMV5T: +  case ARM::ArchKind::ARMV5T:      return Triple::ARMSubArch_v5; -  case ARM::AK_ARMV5TE: -  case ARM::AK_IWMMXT: -  case ARM::AK_IWMMXT2: -  case ARM::AK_XSCALE: -  case ARM::AK_ARMV5TEJ: +  case ARM::ArchKind::ARMV5TE: +  case ARM::ArchKind::IWMMXT: +  case ARM::ArchKind::IWMMXT2: +  case ARM::ArchKind::XSCALE: +  case ARM::ArchKind::ARMV5TEJ:      return Triple::ARMSubArch_v5te; -  case ARM::AK_ARMV6: +  case ARM::ArchKind::ARMV6:      return Triple::ARMSubArch_v6; -  case ARM::AK_ARMV6K: -  case ARM::AK_ARMV6KZ: +  case ARM::ArchKind::ARMV6K: +  case ARM::ArchKind::ARMV6KZ:      return Triple::ARMSubArch_v6k; -  case ARM::AK_ARMV6T2: +  case ARM::ArchKind::ARMV6T2:      return Triple::ARMSubArch_v6t2; -  case ARM::AK_ARMV6M: +  case ARM::ArchKind::ARMV6M:      return Triple::ARMSubArch_v6m; -  case ARM::AK_ARMV7A: -  case ARM::AK_ARMV7R: +  case ARM::ArchKind::ARMV7A: +  case ARM::ArchKind::ARMV7R:      return Triple::ARMSubArch_v7; -  case ARM::AK_ARMV7VE: +  case ARM::ArchKind::ARMV7VE:      return Triple::ARMSubArch_v7ve; -  case ARM::AK_ARMV7K: +  case ARM::ArchKind::ARMV7K:      return Triple::ARMSubArch_v7k; -  case ARM::AK_ARMV7M: +  case ARM::ArchKind::ARMV7M:      return Triple::ARMSubArch_v7m; -  case ARM::AK_ARMV7S: +  case ARM::ArchKind::ARMV7S:      return Triple::ARMSubArch_v7s; -  case ARM::AK_ARMV7EM: +  case ARM::ArchKind::ARMV7EM:      return Triple::ARMSubArch_v7em; -  case ARM::AK_ARMV8A: +  case ARM::ArchKind::ARMV8A:      return Triple::ARMSubArch_v8; -  case ARM::AK_ARMV8_1A: +  case ARM::ArchKind::ARMV8_1A:      return Triple::ARMSubArch_v8_1a; -  case ARM::AK_ARMV8_2A: +  case ARM::ArchKind::ARMV8_2A:      return Triple::ARMSubArch_v8_2a; -  case ARM::AK_ARMV8R: +  case ARM::ArchKind::ARMV8_3A: +    return Triple::ARMSubArch_v8_3a; +  case ARM::ArchKind::ARMV8R:      return Triple::ARMSubArch_v8r; -  case ARM::AK_ARMV8MBaseline: +  case ARM::ArchKind::ARMV8MBaseline:      return Triple::ARMSubArch_v8m_baseline; -  case ARM::AK_ARMV8MMainline: +  case ARM::ArchKind::ARMV8MMainline:      return Triple::ARMSubArch_v8m_mainline;    default:      return Triple::NoSubArch; @@ -613,6 +631,7 @@ static Triple::ObjectFormatType getDefaultFormat(const Triple &T) {      return Triple::ELF;    case Triple::aarch64_be: +  case Triple::arc:    case Triple::amdgcn:    case Triple::amdil:    case Triple::amdil64: @@ -1166,6 +1185,7 @@ static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) {    case llvm::Triple::msp430:      return 16; +  case llvm::Triple::arc:    case llvm::Triple::arm:    case llvm::Triple::armeb:    case llvm::Triple::hexagon: @@ -1249,6 +1269,7 @@ Triple Triple::get32BitArchVariant() const {    case Triple::amdil:    case Triple::hsail:    case Triple::spir: +  case Triple::arc:    case Triple::arm:    case Triple::armeb:    case Triple::hexagon: @@ -1299,6 +1320,7 @@ Triple Triple::get64BitArchVariant() const {    Triple T(*this);    switch (getArch()) {    case Triple::UnknownArch: +  case Triple::arc:    case Triple::avr:    case Triple::hexagon:    case Triple::kalimba: @@ -1552,7 +1574,7 @@ StringRef Triple::getARMCPUForArch(StringRef MArch) const {      return StringRef();    StringRef CPU = ARM::getDefaultCPU(MArch); -  if (!CPU.empty()) +  if (!CPU.empty() && !CPU.equals("invalid"))      return CPU;    // If no specific architecture version is requested, return the minimum CPU  | 
