diff options
| author | Che-Liang Chiou <clchiou@gmail.com> | 2011-03-02 07:36:48 +0000 |
|---|---|---|
| committer | Che-Liang Chiou <clchiou@gmail.com> | 2011-03-02 07:36:48 +0000 |
| commit | 59515dc703553ca509e41b6cb019689f640a0236 (patch) | |
| tree | ea32ebe2894dcadf8efff310f47cd1fcce664d60 /llvm/lib/Target/PTX/PTXTargetMachine.cpp | |
| parent | 79adb25b86352f4c888b11c6aefc90fea19fedd4 (diff) | |
| download | bcm5719-llvm-59515dc703553ca509e41b6cb019689f640a0236.tar.gz bcm5719-llvm-59515dc703553ca509e41b6cb019689f640a0236.zip | |
Add 64-bit addressing to PTX backend
- Add '64bit' sub-target option.
- Select 32-bit/64-bit loads/stores based on '64bit' option.
- Fix function parameter order.
Patch by Justin Holewinski
llvm-svn: 126837
Diffstat (limited to 'llvm/lib/Target/PTX/PTXTargetMachine.cpp')
| -rw-r--r-- | llvm/lib/Target/PTX/PTXTargetMachine.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/llvm/lib/Target/PTX/PTXTargetMachine.cpp b/llvm/lib/Target/PTX/PTXTargetMachine.cpp index b263813cb4e..371510fe325 100644 --- a/llvm/lib/Target/PTX/PTXTargetMachine.cpp +++ b/llvm/lib/Target/PTX/PTXTargetMachine.cpp @@ -16,6 +16,7 @@ #include "PTXTargetMachine.h" #include "llvm/PassManager.h" #include "llvm/Target/TargetRegistry.h" +#include "llvm/Support/raw_ostream.h" using namespace llvm; @@ -34,16 +35,24 @@ extern "C" void LLVMInitializePTXTarget() { TargetRegistry::RegisterAsmStreamer(ThePTXTarget, createPTXAsmStreamer); } +namespace { + const char* DataLayout32 = "e-p:32:32-i64:32:32-f64:32:32-v128:32:128-v64:32:64-n32:64"; + const char* DataLayout64 = "e-p:64:64-i64:32:32-f64:32:32-v128:32:128-v64:32:64-n32:64"; +} + // DataLayout and FrameLowering are filled with dummy data PTXTargetMachine::PTXTargetMachine(const Target &T, const std::string &TT, const std::string &FS) - : LLVMTargetMachine(T, TT), - DataLayout("e-p:32:32-i64:32:32-f64:32:32-v128:32:128-v64:32:64-n32:64"), + : Subtarget(TT, FS), + // FIXME: This feels like a dirty hack, but Subtarget does not appear to be + // initialized at this point, and we need to finish initialization of + // DataLayout. + DataLayout((FS.find("64bit") != FS.npos) ? DataLayout64 : DataLayout32), + LLVMTargetMachine(T, TT), FrameLowering(Subtarget), - InstrInfo(*this), TLInfo(*this), - Subtarget(TT, FS) { + InstrInfo(*this) { } bool PTXTargetMachine::addInstSelector(PassManagerBase &PM, |

