mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	parallelization pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4965 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			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);
 | |
| }
 | |
| 
 | |
| 
 | |
| //---------------------------------------------------------------------------- 
 |