forked from OSchip/llvm-project
R600: Create an R600TargetMachine for pre-gcn GPUs
No functinality change. R600TargetMachine inherits from AMDGPUTargetMachine. llvm-svn: 228849
This commit is contained in:
parent
502ef4e791
commit
c65b36061a
|
@ -39,7 +39,7 @@ using namespace llvm;
|
|||
|
||||
extern "C" void LLVMInitializeR600Target() {
|
||||
// Register the target
|
||||
RegisterTargetMachine<AMDGPUTargetMachine> X(TheAMDGPUTarget);
|
||||
RegisterTargetMachine<R600TargetMachine> X(TheAMDGPUTarget);
|
||||
RegisterTargetMachine<GCNTargetMachine> Y(TheGCNTarget);
|
||||
}
|
||||
|
||||
|
@ -83,6 +83,29 @@ AMDGPUTargetMachine::~AMDGPUTargetMachine() {
|
|||
delete TLOF;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// R600 Target Machine (R600 -> Cayman)
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
R600TargetMachine::R600TargetMachine(const Target &T, StringRef TT, StringRef FS,
|
||||
StringRef CPU, TargetOptions Options, Reloc::Model RM,
|
||||
CodeModel::Model CM, CodeGenOpt::Level OL) :
|
||||
AMDGPUTargetMachine(T, TT, FS, CPU, Options, RM, CM, OL) { }
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// GCN Target Machine (SI+)
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
GCNTargetMachine::GCNTargetMachine(const Target &T, StringRef TT, StringRef FS,
|
||||
StringRef CPU, TargetOptions Options, Reloc::Model RM,
|
||||
CodeModel::Model CM, CodeGenOpt::Level OL) :
|
||||
AMDGPUTargetMachine(T, TT, FS, CPU, Options, RM, CM, OL) { }
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AMDGPU Pass Setup
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace {
|
||||
class AMDGPUPassConfig : public TargetPassConfig {
|
||||
public:
|
||||
|
@ -116,10 +139,6 @@ TargetPassConfig *AMDGPUTargetMachine::createPassConfig(PassManagerBase &PM) {
|
|||
return new AMDGPUPassConfig(this, PM);
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AMDGPU Pass Setup
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
TargetIRAnalysis AMDGPUTargetMachine::getTargetIRAnalysis() {
|
||||
return TargetIRAnalysis(
|
||||
[this](Function &F) { return TargetTransformInfo(AMDGPUTTIImpl(this)); });
|
||||
|
@ -234,13 +253,3 @@ void AMDGPUPassConfig::addPreEmitPass() {
|
|||
addPass(createSILowerControlFlowPass(*TM), false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// GCN Target Machine (SI+)
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
GCNTargetMachine::GCNTargetMachine(const Target &T, StringRef TT, StringRef FS,
|
||||
StringRef CPU, TargetOptions Options, Reloc::Model RM,
|
||||
CodeModel::Model CM, CodeGenOpt::Level OL) :
|
||||
AMDGPUTargetMachine(T, TT, FS, CPU, Options, RM, CM, OL) { }
|
||||
|
|
|
@ -62,6 +62,18 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// R600 Target Machine (R600 -> Cayman)
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class R600TargetMachine : public AMDGPUTargetMachine {
|
||||
|
||||
public:
|
||||
R600TargetMachine(const Target &T, StringRef TT, StringRef FS,
|
||||
StringRef CPU, TargetOptions Options, Reloc::Model RM,
|
||||
CodeModel::Model CM, CodeGenOpt::Level OL);
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// GCN Target Machine (SI+)
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
Loading…
Reference in New Issue