mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-30 07:22:55 +01:00
6c46fba526
parallelization pass. llvm-svn: 4965
55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
//===- Cilkifier.cpp - Support routines for Cilk code gen. ------*- C++ -*-===//
|
|
//
|
|
// This is located here so that the code generator (dis) does not have to
|
|
// include and link with the libtipo.a archive containing class Cilkifier
|
|
// and the rest of the automatic parallelization code.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
#include "llvm/Support/Cilkifier.h"
|
|
#include "llvm/Function.h"
|
|
#include "llvm/iOther.h"
|
|
#include "llvm/DerivedTypes.h"
|
|
#include <vector>
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Global constants used in marking Cilk functions and function calls.
|
|
// These should be used only by the auto-parallelization pass.
|
|
//----------------------------------------------------------------------------
|
|
|
|
const std::string CilkSuffix(".llvm2cilk");
|
|
const std::string DummySyncFuncName("__sync.llvm2cilk");
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Routines to identify Cilk functions, calls to Cilk functions, and syncs.
|
|
//----------------------------------------------------------------------------
|
|
|
|
bool isCilk(const Function& F)
|
|
{
|
|
assert(F.hasName());
|
|
return (F.getName().rfind(CilkSuffix) ==
|
|
F.getName().size() - CilkSuffix.size());
|
|
}
|
|
|
|
bool isCilkMain(const Function& F)
|
|
{
|
|
assert(F.hasName());
|
|
return (F.getName() == std::string("main") + CilkSuffix);
|
|
}
|
|
|
|
|
|
bool isCilk(const CallInst& CI)
|
|
{
|
|
return (CI.getCalledFunction() != NULL && isCilk(*CI.getCalledFunction()));
|
|
}
|
|
|
|
bool isSync(const CallInst& CI)
|
|
{
|
|
return (CI.getCalledFunction() != NULL &&
|
|
CI.getCalledFunction()->getName() == DummySyncFuncName);
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------
|