diff --git a/builtins.cpp b/builtins.cpp index 62ca0f15..88829072 100644 --- a/builtins.cpp +++ b/builtins.cpp @@ -697,6 +697,7 @@ AddBitcodeToModule(const unsigned char *bitcode, int length, g->target->getISA() != Target::NEON16 && g->target->getISA() != Target::NEON8) #endif // !__arm__ + if (g->target->getISA() != Target::NVPTX) { Assert(bcTriple.getArch() == llvm::Triple::UnknownArch || mTriple.getArch() == bcTriple.getArch()); diff --git a/ispc.cpp b/ispc.cpp index 103e9983..6970381c 100644 --- a/ispc.cpp +++ b/ispc.cpp @@ -278,6 +278,9 @@ Target::Target(const char *arch, const char *cpu, const char *isa, bool pic) : arch = "arm"; else #endif + if(!strncmp(isa, "nvptx", 5)) + arch = "nvptx64"; + else arch = "x86-64"; } @@ -703,6 +706,7 @@ Target::Target(const char *arch, const char *cpu, const char *isa, bool pic) : else if (!strcasecmp(isa, "nvptx")) { this->m_isa = Target::NVPTX; + this->m_cpu = "sm_35"; this->m_nativeVectorWidth = 32; this->m_nativeVectorAlignment = 32; this->m_vectorWidth = 1; @@ -872,6 +876,8 @@ Target::GetTripleString() const { triple.setArchName("i386"); else if (m_arch == "x86-64") triple.setArchName("x86_64"); + else if (m_arch == "nvptx64") + triple = llvm::Triple("nvptx64", "nvidia", "cuda"); else triple.setArchName(m_arch); } diff --git a/main.cpp b/main.cpp index c488440c..2815cde9 100644 --- a/main.cpp +++ b/main.cpp @@ -323,10 +323,6 @@ int main(int Argc, char *Argv[]) { LLVMInitializeNVPTXTargetInfo(); LLVMInitializeNVPTXTarget(); LLVMInitializeNVPTXAsmPrinter(); -#if 0 - LLVMInitializeNVPTXAsmParser(); - LLVMInitializeNVPTXDisassembler(); -#endif LLVMInitializeNVPTXTargetMC(); char *file = NULL;