Call LLVM opt to optimize bitcode (#245)
* Call LLVM opt to optimize bitcode * Rename variables
This commit is contained in:
		
							parent
							
								
									58ee62fb49
								
							
						
					
					
						commit
						dbe0d734b5
					
				|  | @ -5,6 +5,7 @@ | |||
| namespace onnx_mlir { | ||||
| std::string kExecPath = "@CMAKE_INSTALL_PREFIX@/bin/onnx-mlir"; /* fallback if not set by main */ | ||||
| const std::string kInstPath = "@CMAKE_INSTALL_PREFIX@"; | ||||
| const std::string kOptPath = "@LLVM_PROJ_BUILD@/bin/opt"; | ||||
| const std::string kLlcPath = "@LLVM_PROJ_BUILD@/bin/llc"; | ||||
| const std::string kCxxPath = "@CMAKE_CXX_COMPILER@"; | ||||
| const std::string kLinkerPath = "@CMAKE_LINKER@"; | ||||
|  |  | |||
|  | @ -250,16 +250,28 @@ void genConstPackObj(const mlir::OwningModuleRef &module, | |||
| #endif | ||||
| } | ||||
| 
 | ||||
| // Write LLVM bitcode.
 | ||||
| void genLLVMBitcode(const mlir::OwningModuleRef &module, string bitcodePath) { | ||||
| // Write LLVM optimized bitcode.
 | ||||
| void genLLVMBitcode(const mlir::OwningModuleRef &module, | ||||
|     string optimizedBitcodePath, string outputBaseName) { | ||||
|   error_code error; | ||||
| 
 | ||||
|   // Write bitcode to a file.
 | ||||
|   string unoptimizedBitcodePath = outputBaseName + ".unoptimized.bc"; | ||||
|   llvm::FileRemover unoptimzedBitcodeRemover(unoptimizedBitcodePath); | ||||
| 
 | ||||
|   llvm::raw_fd_ostream moduleBitcodeStream( | ||||
|       bitcodePath, error, llvm::sys::fs::F_None); | ||||
|       unoptimizedBitcodePath, error, llvm::sys::fs::F_None); | ||||
| 
 | ||||
|   llvm::WriteBitcodeToFile( | ||||
|       *mlir::translateModuleToLLVMIR(*module), moduleBitcodeStream); | ||||
|   moduleBitcodeStream.flush(); | ||||
| 
 | ||||
|   // Use the LLVM's 'opt' command to optimize the bitcode.
 | ||||
|   Command optBitcode(/*exePath=*/kOptPath); | ||||
|   optBitcode.appendStr("-O3") | ||||
|       .appendList({"-o", optimizedBitcodePath}) | ||||
|       .appendStr(unoptimizedBitcodePath) | ||||
|       .exec(); | ||||
| } | ||||
| 
 | ||||
| // Compile LLVM bitcode to object file.
 | ||||
|  | @ -319,7 +331,7 @@ void compileModuleToSharedLibrary( | |||
|   llvm::FileRemover constPackObjRemover(constPackObjPath.getValue()); | ||||
| 
 | ||||
|   string bitcodePath = outputBaseName + ".bc"; | ||||
|   genLLVMBitcode(module, bitcodePath); | ||||
|   genLLVMBitcode(module, bitcodePath, outputBaseName); | ||||
|   llvm::FileRemover bitcodeRemover(bitcodePath); | ||||
| 
 | ||||
|   string modelObjPath = outputBaseName + ".o"; | ||||
|  | @ -340,7 +352,7 @@ void compileModuleToJniJar( | |||
|   llvm::FileRemover constPackObjRemover(constPackObjPath.getValue()); | ||||
| 
 | ||||
|   string bitcodePath = outputBaseName + ".bc"; | ||||
|   genLLVMBitcode(module, bitcodePath); | ||||
|   genLLVMBitcode(module, bitcodePath, outputBaseName); | ||||
|   llvm::FileRemover bitcodeRemover(bitcodePath); | ||||
| 
 | ||||
|   string modelObjPath = outputBaseName + ".o"; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue