aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Transforms
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2002-12-10 13:08:48 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2002-12-10 13:08:48 +0000
commitd86deb689bfec6cd3f0f2a0003dbbf3214f3cd4d (patch)
tree1c0d722e832c6128c8badcc7233542bcaa8333b7 /lib/Transforms
parent83e3b6503d775e98cc85fb881419d1c23b75cde2 (diff)
downloadexternal_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.cpp54
-rw-r--r--lib/Transforms/IPO/Cilkifier.h35
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