projects
/
oota-llvm.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
460f2ac
)
Move all of the hexagon subtarget dependent variables from the target
author
Eric Christopher
<echristo@gmail.com>
Fri, 27 Jun 2014 00:27:40 +0000
(
00:27
+0000)
committer
Eric Christopher
<echristo@gmail.com>
Fri, 27 Jun 2014 00:27:40 +0000
(
00:27
+0000)
machine to the subtarget.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211824
91177308
-0d34-0410-b5e6-
96231b3b80d8
lib/Target/Hexagon/HexagonSubtarget.cpp
patch
|
blob
|
history
lib/Target/Hexagon/HexagonSubtarget.h
patch
|
blob
|
history
lib/Target/Hexagon/HexagonTargetMachine.cpp
patch
|
blob
|
history
lib/Target/Hexagon/HexagonTargetMachine.h
patch
|
blob
|
history
diff --git
a/lib/Target/Hexagon/HexagonSubtarget.cpp
b/lib/Target/Hexagon/HexagonSubtarget.cpp
index 70c87fa19d1a839cdfb6412a0282edcbe6b43812..657893f32feecf25df76456411dbd87796b67f29 100644
(file)
--- a/
lib/Target/Hexagon/HexagonSubtarget.cpp
+++ b/
lib/Target/Hexagon/HexagonSubtarget.cpp
@@
-48,10
+48,8
@@
EnableIEEERndNear(
cl::Hidden, cl::ZeroOrMore, cl::init(false),
cl::desc("Generate non-chopped conversion from fp to int."));
cl::Hidden, cl::ZeroOrMore, cl::init(false),
cl::desc("Generate non-chopped conversion from fp to int."));
-HexagonSubtarget::HexagonSubtarget(StringRef TT, StringRef CPU, StringRef FS):
- HexagonGenSubtargetInfo(TT, CPU, FS),
- CPUString(CPU.str()) {
-
+HexagonSubtarget &
+HexagonSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) {
// If the programmer has not specified a Hexagon version, default to -mv4.
if (CPUString.empty())
CPUString = "hexagonv4";
// If the programmer has not specified a Hexagon version, default to -mv4.
if (CPUString.empty())
CPUString = "hexagonv4";
@@
-70,6
+68,15
@@
HexagonSubtarget::HexagonSubtarget(StringRef TT, StringRef CPU, StringRef FS):
}
ParseSubtargetFeatures(CPUString, FS);
}
ParseSubtargetFeatures(CPUString, FS);
+ return *this;
+}
+
+HexagonSubtarget::HexagonSubtarget(StringRef TT, StringRef CPU, StringRef FS,
+ const TargetMachine &TM)
+ : HexagonGenSubtargetInfo(TT, CPU, FS), CPUString(CPU.str()),
+ DL("e-m:e-p:32:32-i1:32-i64:64-a:0-n32"),
+ InstrInfo(initializeSubtargetDependencies(CPU, FS)), TLInfo(TM),
+ TSInfo(DL), FrameLowering() {
// Initialize scheduling itinerary for the specified CPU.
InstrItins = getInstrItineraryForCPU(CPUString);
// Initialize scheduling itinerary for the specified CPU.
InstrItins = getInstrItineraryForCPU(CPUString);
diff --git
a/lib/Target/Hexagon/HexagonSubtarget.h
b/lib/Target/Hexagon/HexagonSubtarget.h
index 690bef0d7296107b3115ffde68399fba3c651fc9..b184e62b4d0d966f5d14742c1d5e2d19faadbd99 100644
(file)
--- a/
lib/Target/Hexagon/HexagonSubtarget.h
+++ b/
lib/Target/Hexagon/HexagonSubtarget.h
@@
-14,6
+14,11
@@
#ifndef Hexagon_SUBTARGET_H
#define Hexagon_SUBTARGET_H
#ifndef Hexagon_SUBTARGET_H
#define Hexagon_SUBTARGET_H
+#include "HexagonFrameLowering.h"
+#include "HexagonInstrInfo.h"
+#include "HexagonISelLowering.h"
+#include "HexagonSelectionDAGInfo.h"
+#include "llvm/IR/DataLayout.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetSubtargetInfo.h"
#include <string>
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetSubtargetInfo.h"
#include <string>
@@
-28,6
+33,7
@@
namespace llvm {
class HexagonSubtarget : public HexagonGenSubtargetInfo {
virtual void anchor();
class HexagonSubtarget : public HexagonGenSubtargetInfo {
virtual void anchor();
+
bool UseMemOps;
bool ModeIEEERndNear;
bool UseMemOps;
bool ModeIEEERndNear;
@@
-37,16
+43,35
@@
public:
};
HexagonArchEnum HexagonArchVersion;
};
HexagonArchEnum HexagonArchVersion;
+private:
std::string CPUString;
std::string CPUString;
+ const DataLayout DL; // Calculates type size & alignment.
+ HexagonInstrInfo InstrInfo;
+ HexagonTargetLowering TLInfo;
+ HexagonSelectionDAGInfo TSInfo;
+ HexagonFrameLowering FrameLowering;
InstrItineraryData InstrItins;
public:
InstrItineraryData InstrItins;
public:
- HexagonSubtarget(StringRef TT, StringRef CPU, StringRef FS);
+ HexagonSubtarget(StringRef TT, StringRef CPU, StringRef FS,
+ const TargetMachine &TM);
/// getInstrItins - Return the instruction itineraies based on subtarget
/// selection.
const InstrItineraryData &getInstrItineraryData() const { return InstrItins; }
/// getInstrItins - Return the instruction itineraies based on subtarget
/// selection.
const InstrItineraryData &getInstrItineraryData() const { return InstrItins; }
+ const HexagonInstrInfo *getInstrInfo() const { return &InstrInfo; }
+ const HexagonRegisterInfo *getRegisterInfo() const {
+ return &InstrInfo.getRegisterInfo();
+ }
+ const HexagonTargetLowering *getTargetLowering() const { return &TLInfo; }
+ const HexagonFrameLowering *getFrameLowering() const {
+ return &FrameLowering;
+ }
+ const HexagonSelectionDAGInfo *getSelectionDAGInfo() const { return &TSInfo; }
+ const DataLayout *getDataLayout() const { return &DL; }
+ HexagonSubtarget &initializeSubtargetDependencies(StringRef CPU,
+ StringRef FS);
/// ParseSubtargetFeatures - Parses features string setting specified
/// subtarget options. Definition of function is auto generated by tblgen.
/// ParseSubtargetFeatures - Parses features string setting specified
/// subtarget options. Definition of function is auto generated by tblgen.
diff --git
a/lib/Target/Hexagon/HexagonTargetMachine.cpp
b/lib/Target/Hexagon/HexagonTargetMachine.cpp
index 40c06f61fd5370225ce742a6175d7db07b828ffc..78314100d18a24e78da47c5626bb7a24da5acb54 100644
(file)
--- a/
lib/Target/Hexagon/HexagonTargetMachine.cpp
+++ b/
lib/Target/Hexagon/HexagonTargetMachine.cpp
@@
-70,9
+70,7
@@
HexagonTargetMachine::HexagonTargetMachine(const Target &T, StringRef TT,
Reloc::Model RM, CodeModel::Model CM,
CodeGenOpt::Level OL)
: LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL),
Reloc::Model RM, CodeModel::Model CM,
CodeGenOpt::Level OL)
: LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL),
- DL("e-m:e-p:32:32-i1:32-i64:64-a:0-n32"), Subtarget(TT, CPU, FS),
- InstrInfo(Subtarget), TLInfo(*this), TSInfo(DL),
- FrameLowering() {
+ Subtarget(TT, CPU, FS, *this) {
initAsmInfo();
}
initAsmInfo();
}
diff --git
a/lib/Target/Hexagon/HexagonTargetMachine.h
b/lib/Target/Hexagon/HexagonTargetMachine.h
index fa7b6d486fe55c76ea32dc6c189ce30ad6c1466f..d88178e052e735b03642d25e82b032a93f20bc0c 100644
(file)
--- a/
lib/Target/Hexagon/HexagonTargetMachine.h
+++ b/
lib/Target/Hexagon/HexagonTargetMachine.h
@@
-14,12
+14,8
@@
#ifndef HexagonTARGETMACHINE_H
#define HexagonTARGETMACHINE_H
#ifndef HexagonTARGETMACHINE_H
#define HexagonTARGETMACHINE_H
-#include "HexagonFrameLowering.h"
-#include "HexagonISelLowering.h"
#include "HexagonInstrInfo.h"
#include "HexagonInstrInfo.h"
-#include "HexagonSelectionDAGInfo.h"
#include "HexagonSubtarget.h"
#include "HexagonSubtarget.h"
-#include "llvm/IR/DataLayout.h"
#include "llvm/Target/TargetMachine.h"
namespace llvm {
#include "llvm/Target/TargetMachine.h"
namespace llvm {
@@
-27,12
+23,7
@@
namespace llvm {
class Module;
class HexagonTargetMachine : public LLVMTargetMachine {
class Module;
class HexagonTargetMachine : public LLVMTargetMachine {
- const DataLayout DL; // Calculates type size & alignment.
HexagonSubtarget Subtarget;
HexagonSubtarget Subtarget;
- HexagonInstrInfo InstrInfo;
- HexagonTargetLowering TLInfo;
- HexagonSelectionDAGInfo TSInfo;
- HexagonFrameLowering FrameLowering;
public:
HexagonTargetMachine(const Target &T, StringRef TT,StringRef CPU,
public:
HexagonTargetMachine(const Target &T, StringRef TT,StringRef CPU,
@@
-41,33
+32,29
@@
public:
CodeGenOpt::Level OL);
const HexagonInstrInfo *getInstrInfo() const override {
CodeGenOpt::Level OL);
const HexagonInstrInfo *getInstrInfo() const override {
- return
&InstrInfo
;
+ return
getSubtargetImpl()->getInstrInfo()
;
}
const HexagonSubtarget *getSubtargetImpl() const override {
return &Subtarget;
}
const HexagonRegisterInfo *getRegisterInfo() const override {
}
const HexagonSubtarget *getSubtargetImpl() const override {
return &Subtarget;
}
const HexagonRegisterInfo *getRegisterInfo() const override {
- return
&InstrInfo.
getRegisterInfo();
+ return
getSubtargetImpl()->
getRegisterInfo();
}
}
-
const InstrItineraryData* getInstrItineraryData() const override {
return &getSubtargetImpl()->getInstrItineraryData();
}
const InstrItineraryData* getInstrItineraryData() const override {
return &getSubtargetImpl()->getInstrItineraryData();
}
-
-
const HexagonTargetLowering* getTargetLowering() const override {
const HexagonTargetLowering* getTargetLowering() const override {
- return
&TLInfo
;
+ return
getSubtargetImpl()->getTargetLowering()
;
}
}
-
const HexagonFrameLowering* getFrameLowering() const override {
const HexagonFrameLowering* getFrameLowering() const override {
- return
&FrameLowering
;
+ return
getSubtargetImpl()->getFrameLowering()
;
}
}
-
const HexagonSelectionDAGInfo* getSelectionDAGInfo() const override {
const HexagonSelectionDAGInfo* getSelectionDAGInfo() const override {
- return &TSInfo;
+ return getSubtargetImpl()->getSelectionDAGInfo();
+ }
+ const DataLayout *getDataLayout() const override {
+ return getSubtargetImpl()->getDataLayout();
}
}
-
- const DataLayout *getDataLayout() const override { return &DL; }
static unsigned getModuleMatchQuality(const Module &M);
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
static unsigned getModuleMatchQuality(const Module &M);
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;