aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/PTX
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/PTX')
-rw-r--r--lib/Target/PTX/PTXFrameInfo.cpp24
-rw-r--r--lib/Target/PTX/PTXFrameInfo.h41
-rw-r--r--lib/Target/PTX/PTXRegisterInfo.h4
-rw-r--r--lib/Target/PTX/PTXTargetMachine.cpp2
-rw-r--r--lib/Target/PTX/PTXTargetMachine.h3
5 files changed, 68 insertions, 6 deletions
diff --git a/lib/Target/PTX/PTXFrameInfo.cpp b/lib/Target/PTX/PTXFrameInfo.cpp
new file mode 100644
index 0000000000..08a2237e44
--- /dev/null
+++ b/lib/Target/PTX/PTXFrameInfo.cpp
@@ -0,0 +1,24 @@
+//=======- PTXFrameInfo.cpp - PTX Frame Information -----------*- C++ -*-=====//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the PTX implementation of TargetFrameInfo class.
+//
+//===----------------------------------------------------------------------===//
+
+#include "PTXFrameInfo.h"
+#include "llvm/CodeGen/MachineFunction.h"
+
+using namespace llvm;
+
+void PTXFrameInfo::emitPrologue(MachineFunction &MF) const {
+}
+
+void PTXFrameInfo::emitEpilogue(MachineFunction &MF,
+ MachineBasicBlock &MBB) const {
+}
diff --git a/lib/Target/PTX/PTXFrameInfo.h b/lib/Target/PTX/PTXFrameInfo.h
new file mode 100644
index 0000000000..6790120889
--- /dev/null
+++ b/lib/Target/PTX/PTXFrameInfo.h
@@ -0,0 +1,41 @@
+//====---- PTXFrameInfo.h - Define TargetFrameInfo for PTX --*- C++ -*----====//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+//
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef PTX_FRAMEINFO_H
+#define PTX_FRAMEINFO_H
+
+#include "PTX.h"
+#include "PTXSubtarget.h"
+#include "llvm/Target/TargetFrameInfo.h"
+
+namespace llvm {
+ class PTXSubtarget;
+
+class PTXFrameInfo : public TargetFrameInfo {
+protected:
+ const PTXSubtarget &STI;
+
+public:
+ explicit PTXFrameInfo(const PTXSubtarget &sti)
+ : TargetFrameInfo(TargetFrameInfo::StackGrowsDown, 2, -2), STI(sti) {
+ }
+
+ /// emitProlog/emitEpilog - These methods insert prolog and epilog code into
+ /// the function.
+ void emitPrologue(MachineFunction &MF) const;
+ void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const;
+};
+
+} // End llvm namespace
+
+#endif
diff --git a/lib/Target/PTX/PTXRegisterInfo.h b/lib/Target/PTX/PTXRegisterInfo.h
index a658c9258f..4e5b4b12f5 100644
--- a/lib/Target/PTX/PTXRegisterInfo.h
+++ b/lib/Target/PTX/PTXRegisterInfo.h
@@ -46,10 +46,6 @@ struct PTXRegisterInfo : public PTXGenRegisterInfo {
llvm_unreachable("PTX does not support general function call");
}
- virtual void emitPrologue(MachineFunction &MF) const {}
- virtual void emitEpilogue(MachineFunction &MF,
- MachineBasicBlock &MBB) const {}
-
virtual unsigned getFrameRegister(const MachineFunction &MF) const {
llvm_unreachable("PTX does not have a frame register");
return 0;
diff --git a/lib/Target/PTX/PTXTargetMachine.cpp b/lib/Target/PTX/PTXTargetMachine.cpp
index 2335f362e2..b60e531708 100644
--- a/lib/Target/PTX/PTXTargetMachine.cpp
+++ b/lib/Target/PTX/PTXTargetMachine.cpp
@@ -32,7 +32,7 @@ PTXTargetMachine::PTXTargetMachine(const Target &T,
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"),
- FrameInfo(TargetFrameInfo::StackGrowsDown, 2, -2),
+ FrameInfo(Subtarget),
InstrInfo(*this),
TLInfo(*this),
Subtarget(TT, FS) {
diff --git a/lib/Target/PTX/PTXTargetMachine.h b/lib/Target/PTX/PTXTargetMachine.h
index b1379b4cdb..327ac9fbcf 100644
--- a/lib/Target/PTX/PTXTargetMachine.h
+++ b/lib/Target/PTX/PTXTargetMachine.h
@@ -16,6 +16,7 @@
#include "PTXISelLowering.h"
#include "PTXInstrInfo.h"
+#include "PTXFrameInfo.h"
#include "PTXSubtarget.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetFrameInfo.h"
@@ -25,7 +26,7 @@ namespace llvm {
class PTXTargetMachine : public LLVMTargetMachine {
private:
const TargetData DataLayout;
- TargetFrameInfo FrameInfo;
+ PTXFrameInfo FrameInfo;
PTXInstrInfo InstrInfo;
PTXTargetLowering TLInfo;
PTXSubtarget Subtarget;