diff options
author | Kalle Raiskila <kalle.raiskila@nokia.com> | 2011-08-19 10:50:24 +0000 |
---|---|---|
committer | Kalle Raiskila <kalle.raiskila@nokia.com> | 2011-08-19 10:50:24 +0000 |
commit | 67a9b1fcc797e923ad610e741e5ef3ea6b7aabf2 (patch) | |
tree | 0ae6f08346b9f386d59c4200ecb0523564396591 /lib/Target/CellSPU/SPUTargetMachine.cpp | |
parent | e004d941ec999e0c34772f079e430efe95b0dd9c (diff) |
Have SPU backend use the external TCE scheduler, if the library is loaded as a
module.
Patch by Pekka Jääskeläinen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138037 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CellSPU/SPUTargetMachine.cpp')
-rw-r--r-- | lib/Target/CellSPU/SPUTargetMachine.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Target/CellSPU/SPUTargetMachine.cpp b/lib/Target/CellSPU/SPUTargetMachine.cpp index ea59a80e87..2c7c89eca0 100644 --- a/lib/Target/CellSPU/SPUTargetMachine.cpp +++ b/lib/Target/CellSPU/SPUTargetMachine.cpp @@ -17,6 +17,7 @@ #include "llvm/CodeGen/RegAllocRegistry.h" #include "llvm/CodeGen/SchedulerRegistry.h" #include "llvm/Target/TargetRegistry.h" +#include "llvm/Support/DynamicLibrary.h" using namespace llvm; @@ -59,6 +60,16 @@ bool SPUTargetMachine::addInstSelector(PassManagerBase &PM, bool SPUTargetMachine:: addPreEmitPass(PassManagerBase &PM, CodeGenOpt::Level OptLevel) { + + // load the TCE instruction scheduler, if available via + // loaded plugins + typedef llvm::FunctionPass* (*BuilderFunc)(const char*); + BuilderFunc schedulerCreator = + (BuilderFunc)llvm::sys::DynamicLibrary::SearchForAddressOfSymbol( + "createTCESchedulerPass"); + if (schedulerCreator != NULL) + PM.add(schedulerCreator("cellspu")); + //align instructions with nops/lnops for dual issue PM.add(createSPUNopFillerPass(*this)); return true; |