From 2086b2e76ada5779e355dd70189cd9b7939e2fa9 Mon Sep 17 00:00:00 2001 From: Douglas Katzman Date: Fri, 12 Jun 2015 18:31:38 +0000 Subject: [PATCH] Add 'shave' processor name to Triple Based on ArchType, Clang's driver can select a non-Clang compiler. String parsing in Clang would have sufficed if it were only that, however this change anticipates true llvm support. Differential Revision: http://reviews.llvm.org/D10413 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239631 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/Triple.h | 3 ++- lib/Support/Triple.cpp | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h index 1362fe37c42..485dca051d2 100644 --- a/include/llvm/ADT/Triple.h +++ b/include/llvm/ADT/Triple.h @@ -84,7 +84,8 @@ public: spir, // SPIR: standard portable IR for OpenCL 32-bit version spir64, // SPIR: standard portable IR for OpenCL 64-bit version kalimba, // Kalimba: generic kalimba - LastArchType = kalimba + shave, // SHAVE: Movidius vector VLIW processors + LastArchType = shave }; enum SubArchType { NoSubArch, diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp index ad99386e657..072d4a0d79d 100644 --- a/lib/Support/Triple.cpp +++ b/lib/Support/Triple.cpp @@ -59,6 +59,7 @@ const char *Triple::getArchTypeName(ArchType Kind) { case spir: return "spir"; case spir64: return "spir64"; case kalimba: return "kalimba"; + case shave: return "shave"; } llvm_unreachable("Invalid ArchType!"); @@ -120,6 +121,7 @@ const char *Triple::getArchTypePrefix(ArchType Kind) { case spir: case spir64: return "spir"; case kalimba: return "kalimba"; + case shave: return "shave"; } } @@ -252,6 +254,7 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) { .Case("spir", spir) .Case("spir64", spir64) .Case("kalimba", kalimba) + .Case("shave", shave) .Default(UnknownArch); } @@ -356,6 +359,7 @@ static Triple::ArchType parseArch(StringRef ArchName) { .Case("spir", Triple::spir) .Case("spir64", Triple::spir64) .StartsWith("kalimba", Triple::kalimba) + .Case("shave", Triple::shave) .Default(Triple::UnknownArch); } @@ -1004,6 +1008,7 @@ static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) { case llvm::Triple::hsail: case llvm::Triple::spir: case llvm::Triple::kalimba: + case llvm::Triple::shave: return 32; case llvm::Triple::aarch64: @@ -1075,6 +1080,7 @@ Triple Triple::get32BitArchVariant() const { case Triple::thumbeb: case Triple::x86: case Triple::xcore: + case Triple::shave: // Already 32-bit. break; @@ -1107,6 +1113,7 @@ Triple Triple::get64BitArchVariant() const { case Triple::thumbeb: case Triple::xcore: case Triple::sparcel: + case Triple::shave: T.setArch(UnknownArch); break;