summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/CellSPU
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-05-11 17:31:57 +0000
committerDan Gohman <gohman@apple.com>2010-05-11 17:31:57 +0000
commitbb919dfb6bfe6c3f8b119a2341fb647f6d18a150 (patch)
tree2247003e684bbd62b468104686e4cee76bc7396f /llvm/lib/Target/CellSPU
parent3937e28da01728c12f9f4b6e79b66425e6ab082b (diff)
downloadbcm5719-llvm-bb919dfb6bfe6c3f8b119a2341fb647f6d18a150.tar.gz
bcm5719-llvm-bb919dfb6bfe6c3f8b119a2341fb647f6d18a150.zip
Implement a bunch more TargetSelectionDAGInfo infrastructure.
Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and EmitTargetCodeForMemmove out of TargetLowering and into SelectionDAGInfo to exercise this. llvm-svn: 103481
Diffstat (limited to 'llvm/lib/Target/CellSPU')
-rw-r--r--llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.cpp5
-rw-r--r--llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.h4
-rw-r--r--llvm/lib/Target/CellSPU/SPUTargetMachine.cpp1
-rw-r--r--llvm/lib/Target/CellSPU/SPUTargetMachine.h6
4 files changed, 13 insertions, 3 deletions
diff --git a/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.cpp b/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.cpp
index ca2a4bf2199..5732fd43cdc 100644
--- a/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.cpp
+++ b/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.cpp
@@ -12,10 +12,11 @@
//===----------------------------------------------------------------------===//
#define DEBUG_TYPE "cellspu-selectiondag-info"
-#include "SPUSelectionDAGInfo.h"
+#include "SPUTargetMachine.h"
using namespace llvm;
-SPUSelectionDAGInfo::SPUSelectionDAGInfo() {
+SPUSelectionDAGInfo::SPUSelectionDAGInfo(const SPUTargetMachine &TM)
+ : TargetSelectionDAGInfo(TM) {
}
SPUSelectionDAGInfo::~SPUSelectionDAGInfo() {
diff --git a/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.h b/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.h
index 0a6b4c171f1..39257d92c40 100644
--- a/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.h
+++ b/llvm/lib/Target/CellSPU/SPUSelectionDAGInfo.h
@@ -18,9 +18,11 @@
namespace llvm {
+class SPUTargetMachine;
+
class SPUSelectionDAGInfo : public TargetSelectionDAGInfo {
public:
- SPUSelectionDAGInfo();
+ explicit SPUSelectionDAGInfo(const SPUTargetMachine &TM);
~SPUSelectionDAGInfo();
};
diff --git a/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp b/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp
index 6500067849d..480ec3f7f88 100644
--- a/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp
+++ b/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp
@@ -42,6 +42,7 @@ SPUTargetMachine::SPUTargetMachine(const Target &T, const std::string &TT,
InstrInfo(*this),
FrameInfo(*this),
TLInfo(*this),
+ TSInfo(*this),
InstrItins(Subtarget.getInstrItineraryData()) {
// For the time being, use static relocations, since there's really no
// support for PIC yet.
diff --git a/llvm/lib/Target/CellSPU/SPUTargetMachine.h b/llvm/lib/Target/CellSPU/SPUTargetMachine.h
index 37e7cd2b7b3..7e0270159a8 100644
--- a/llvm/lib/Target/CellSPU/SPUTargetMachine.h
+++ b/llvm/lib/Target/CellSPU/SPUTargetMachine.h
@@ -17,6 +17,7 @@
#include "SPUSubtarget.h"
#include "SPUInstrInfo.h"
#include "SPUISelLowering.h"
+#include "SPUSelectionDAGInfo.h"
#include "SPUFrameInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetData.h"
@@ -34,6 +35,7 @@ class SPUTargetMachine : public LLVMTargetMachine {
SPUInstrInfo InstrInfo;
SPUFrameInfo FrameInfo;
SPUTargetLowering TLInfo;
+ SPUSelectionDAGInfo TSInfo;
InstrItineraryData InstrItins;
public:
SPUTargetMachine(const Target &T, const std::string &TT,
@@ -61,6 +63,10 @@ public:
return &TLInfo;
}
+ virtual const SPUSelectionDAGInfo* getSelectionDAGInfo() const {
+ return &TSInfo;
+ }
+
virtual const SPURegisterInfo *getRegisterInfo() const {
return &InstrInfo.getRegisterInfo();
}
OpenPOWER on IntegriCloud