18 #ifndef TENSORFLOW_COMPILER_XLA_SERVICE_CPU_COMPILER_FUNCTOR_H_ 19 #define TENSORFLOW_COMPILER_XLA_SERVICE_CPU_COMPILER_FUNCTOR_H_ 21 #include "llvm/IR/LegacyPassManager.h" 22 #include "llvm/IR/Module.h" 23 #include "llvm/Object/ObjectFile.h" 24 #include "llvm/Target/TargetMachine.h" 27 #include "tensorflow/core/platform/logging.h" 40 llvm::TargetMachine* target_machine,
const Disassembler* disassembler,
41 int opt_level,
bool optimize_for_size,
bool enable_fast_math,
42 bool disable_expensive_passes,
43 LLVMCompiler::ModuleHook pre_optimization_hook =
nullptr,
44 LLVMCompiler::ModuleHook post_optimization_hook =
nullptr)
45 : target_machine_(target_machine),
46 disassembler_(CHECK_NOTNULL(disassembler)),
47 opt_level_(opt_level),
48 optimize_for_size_(optimize_for_size),
49 enable_fast_math_(enable_fast_math),
50 disable_expensive_passes_(disable_expensive_passes),
51 pre_optimization_hook_(pre_optimization_hook),
52 post_optimization_hook_(post_optimization_hook) {}
55 std::unique_ptr<llvm::MemoryBuffer>
operator()(
56 llvm::Module& module)
const;
61 void AddTargetInfoPasses(llvm::legacy::PassManagerBase* passes)
const;
64 void AddOptimizationPasses(llvm::legacy::PassManagerBase* module_passes,
65 llvm::legacy::FunctionPassManager* function_passes,
66 unsigned opt_level,
unsigned size_level)
const;
68 llvm::TargetMachine* target_machine_;
70 const unsigned opt_level_;
71 const bool optimize_for_size_;
72 const bool enable_fast_math_;
73 const bool disable_expensive_passes_;
74 LLVMCompiler::ModuleHook pre_optimization_hook_;
75 LLVMCompiler::ModuleHook post_optimization_hook_;
81 #endif // TENSORFLOW_COMPILER_XLA_SERVICE_CPU_COMPILER_FUNCTOR_H_ Definition: disassembler.h:55
std::unique_ptr< llvm::MemoryBuffer > operator()(llvm::Module &module) const
Definition: compiler_functor.cc:98
namespace for xla
Definition: client_library.cc:26
Definition: compiler_functor.h:37