Add support for SPIR64 target - the 64bit counterpart of SPIR.
[oota-llvm.git] / lib / Support / Triple.cpp
index 7bf65f72a77c5396d89f7357337b04ef80638651..52bf722d537d35e79350e8cbf079b774091a27e9 100644 (file)
@@ -42,6 +42,7 @@ const char *Triple::getArchTypeName(ArchType Kind) {
   case le32:    return "le32";
   case amdil:   return "amdil";
   case spir:    return "spir";
+  case spir64:  return "spir64";
   }
 
   llvm_unreachable("Invalid ArchType!");
@@ -82,6 +83,7 @@ const char *Triple::getArchTypePrefix(ArchType Kind) {
   case le32:    return "le32";
   case amdil:   return "amdil";
   case spir:    return "spir";
+  case spir64:  return "spir";
   }
 }
 
@@ -173,6 +175,7 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) {
     .Case("le32", le32)
     .Case("amdil", amdil)
     .Case("spir", spir)
+    .Case("spir64", spir64)
     .Default(UnknownArch);
 }
 
@@ -198,6 +201,7 @@ const char *Triple::getArchNameForAssembler() {
     .Case("le32", "le32")
     .Case("amdil", "amdil")
     .Case("spir", "spir")
+    .Case("spir64", "spir64")
     .Default(NULL);
 }
 
@@ -232,6 +236,7 @@ static Triple::ArchType parseArch(StringRef ArchName) {
     .Case("le32", Triple::le32)
     .Case("amdil", Triple::amdil)
     .Case("spir", Triple::spir)
+    .Case("spir64", Triple::spir64)
     .Default(Triple::UnknownArch);
 }
 
@@ -645,7 +650,6 @@ void Triple::setOSAndEnvironmentName(StringRef Str) {
 
 static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
   switch (Arch) {
-  case llvm::Triple::spir:
   case llvm::Triple::UnknownArch:
     return 0;
 
@@ -667,6 +671,7 @@ static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
   case llvm::Triple::thumb:
   case llvm::Triple::x86:
   case llvm::Triple::xcore:
+  case llvm::Triple::spir:
     return 32;
 
   case llvm::Triple::mips64:
@@ -675,6 +680,7 @@ static unsigned getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
   case llvm::Triple::ppc64:
   case llvm::Triple::sparcv9:
   case llvm::Triple::x86_64:
+  case llvm::Triple::spir64:
     return 64;
   }
   llvm_unreachable("Invalid architecture value");
@@ -725,6 +731,7 @@ Triple Triple::get32BitArchVariant() const {
   case Triple::ppc64:     T.setArch(Triple::ppc);   break;
   case Triple::sparcv9:   T.setArch(Triple::sparc);   break;
   case Triple::x86_64:    T.setArch(Triple::x86);     break;
+  case Triple::spir64:    T.setArch(Triple::spir);    break;
   }
   return T;
 }
@@ -746,7 +753,7 @@ Triple Triple::get64BitArchVariant() const {
     T.setArch(UnknownArch);
     break;
 
-  case Triple::spir:
+  case Triple::spir64:
   case Triple::mips64:
   case Triple::mips64el:
   case Triple::nvptx64:
@@ -762,6 +769,7 @@ Triple Triple::get64BitArchVariant() const {
   case Triple::ppc:     T.setArch(Triple::ppc64);     break;
   case Triple::sparc:   T.setArch(Triple::sparcv9);   break;
   case Triple::x86:     T.setArch(Triple::x86_64);    break;
+  case Triple::spir:    T.setArch(Triple::spir64);    break;
   }
   return T;
 }