mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
External routines used to identify Cilk operations inserted by the
parallelization pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4965 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
83e3b6503d
commit
d86deb689b
54
lib/Transforms/IPO/Cilkifier.cpp
Normal file
54
lib/Transforms/IPO/Cilkifier.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
//===- 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);
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
35
lib/Transforms/IPO/Cilkifier.h
Normal file
35
lib/Transforms/IPO/Cilkifier.h
Normal file
@ -0,0 +1,35 @@
|
||||
//===- Cilkifier.h - Support routines for Cilk code generation --*- 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.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_SUPPORT_CILKIFIER_H
|
||||
#define LLVM_SUPPORT_CILKIFIER_H
|
||||
|
||||
#include <string>
|
||||
class Function;
|
||||
class CallInst;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Global constants used in marking Cilk functions and function calls.
|
||||
// These should be used only by the auto-parallelization pass.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
extern const std::string CilkSuffix;
|
||||
extern const std::string DummySyncFuncName;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Routines to identify Cilk functions, calls to Cilk functions, and syncs.
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
extern bool isCilk (const Function& F);
|
||||
extern bool isCilkMain (const Function& F);
|
||||
extern bool isCilk (const CallInst& CI);
|
||||
extern bool isSync (const CallInst& CI);
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user