summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Benyei <guy.benyei@intel.com>2012-11-15 10:35:47 +0000
committerGuy Benyei <guy.benyei@intel.com>2012-11-15 10:35:47 +0000
commitac39a035351a20928e087617e412aa6ce510181f (patch)
tree049bd0dd1d2a9316e4815c9c7c4baa269a48a728
parent7ecfcc163956a9e27845ac217f6c650658631030 (diff)
downloadllvm-ac39a035351a20928e087617e412aa6ce510181f.tar.gz
llvm-ac39a035351a20928e087617e412aa6ce510181f.tar.bz2
llvm-ac39a035351a20928e087617e412aa6ce510181f.tar.xz
Add support for SPIR64 target - the 64bit counterpart of SPIR.
The new OpenCL SPIR extension spec will define separate SPIR for 32 and 64 bit architectures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168036 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/ADT/Triple.h3
-rw-r--r--lib/Support/Triple.cpp12
2 files changed, 12 insertions, 3 deletions
diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h
index c3a2b19d51..a9e67cafba 100644
--- a/include/llvm/ADT/Triple.h
+++ b/include/llvm/ADT/Triple.h
@@ -65,7 +65,8 @@ public:
nvptx64, // NVPTX: 64-bit
le32, // le32: generic little-endian 32-bit CPU (PNaCl / Emscripten)
amdil, // amdil: amd IL
- spir // SPIR: standard portable IR for OpenCL
+ spir, // SPIR: standard portable IR for OpenCL 32-bit version
+ spir64 // SPIR: standard portable IR for OpenCL 64-bit version
};
enum VendorType {
UnknownVendor,
diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp
index 7bf65f72a7..52bf722d53 100644
--- a/lib/Support/Triple.cpp
+++ b/lib/Support/Triple.cpp
@@ -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;
}