mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
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. llvm-svn: 168036
This commit is contained in:
parent
f05d8752a2
commit
04ae9963a3
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user