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 | 024d2614b67a5414c9e7e537f6cbbef2084e7ce8 (patch) | |
| tree | a15496668f6af8c5303d199d09fd712b8ea47d22 /llvm/lib | |
| parent | a87bee84cfb516d7128f3f0e4de317b0c7b13673 (diff) | |
| download | bcm5719-llvm-024d2614b67a5414c9e7e537f6cbbef2084e7ce8.tar.gz bcm5719-llvm-024d2614b67a5414c9e7e537f6cbbef2084e7ce8.zip | |
Have SPU backend use the external TCE scheduler, if the library is loaded as a
module.
Patch by Pekka Jääskeläinen.
llvm-svn: 138037
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/CellSPU/SPUTargetMachine.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp b/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp index ea59a80e870..2c7c89eca04 100644 --- a/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp +++ b/llvm/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; |

