diff options
author | Vikram S. Adve <vadve@cs.uiuc.edu> | 2002-12-10 13:08:48 +0000 |
---|---|---|
committer | Vikram S. Adve <vadve@cs.uiuc.edu> | 2002-12-10 13:08:48 +0000 |
commit | d86deb689bfec6cd3f0f2a0003dbbf3214f3cd4d (patch) | |
tree | 1c0d722e832c6128c8badcc7233542bcaa8333b7 /lib/Transforms | |
parent | 83e3b6503d775e98cc85fb881419d1c23b75cde2 (diff) | |
download | external_llvm-d86deb689bfec6cd3f0f2a0003dbbf3214f3cd4d.zip external_llvm-d86deb689bfec6cd3f0f2a0003dbbf3214f3cd4d.tar.gz external_llvm-d86deb689bfec6cd3f0f2a0003dbbf3214f3cd4d.tar.bz2 |
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
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/IPO/Cilkifier.cpp | 54 | ||||
-rw-r--r-- | lib/Transforms/IPO/Cilkifier.h | 35 |
2 files changed, 89 insertions, 0 deletions
diff --git a/lib/Transforms/IPO/Cilkifier.cpp b/lib/Transforms/IPO/Cilkifier.cpp new file mode 100644 index 0000000..498c58b --- /dev/null +++ b/lib/Transforms/IPO/Cilkifier.cpp @@ -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); +} + + +//---------------------------------------------------------------------------- diff --git a/lib/Transforms/IPO/Cilkifier.h b/lib/Transforms/IPO/Cilkifier.h new file mode 100644 index 0000000..be79ab6 --- /dev/null +++ b/lib/Transforms/IPO/Cilkifier.h @@ -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 |