summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PTX/PTXTargetMachine.cpp
diff options
context:
space:
mode:
authorChe-Liang Chiou <clchiou@gmail.com>2011-03-02 07:36:48 +0000
committerChe-Liang Chiou <clchiou@gmail.com>2011-03-02 07:36:48 +0000
commit59515dc703553ca509e41b6cb019689f640a0236 (patch)
treeea32ebe2894dcadf8efff310f47cd1fcce664d60 /llvm/lib/Target/PTX/PTXTargetMachine.cpp
parent79adb25b86352f4c888b11c6aefc90fea19fedd4 (diff)
downloadbcm5719-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.cpp17
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,
OpenPOWER on IntegriCloud