diff --git a/builtins/target-nvptx64.ll b/builtins/target-nvptx64.ll index c9815455..ecd536a3 100644 --- a/builtins/target-nvptx64.ll +++ b/builtins/target-nvptx64.ll @@ -3,7 +3,7 @@ define(`MASK',`i1') define(`WIDTH',`1') -target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" +;; target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" ;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;; diff --git a/ispc.cpp b/ispc.cpp index 7f8ea80d..8bdcb0c4 100644 --- a/ispc.cpp +++ b/ispc.cpp @@ -710,6 +710,9 @@ Target::Target(const char *arch, const char *cpu, const char *isa, bool pic) : dl_string = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-" "i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-" "f80:128:128-n8:16:32:64-S128-v16:16:16-v32:32:32-v4:128:128"; + } else if (m_isa == Target::NVPTX64) + { + dl_string = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"; } // 3. Finally set member data diff --git a/module.cpp b/module.cpp index 02551dd8..28c922c8 100644 --- a/module.cpp +++ b/module.cpp @@ -1053,6 +1053,11 @@ Module::writeBitcode(llvm::Module *module, const char *outFileName) { } llvm::raw_fd_ostream fos(fd, (fd != 1), false); + if (g->target->getISA() == Target::NVPTX64) + { + const std::string dl_string = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"; + module->setDataLayout(dl_string); + } llvm::WriteBitcodeToFile(module, fos); return true; }