13 #ifndef MLIR_EXECUTIONENGINE_EXECUTIONENGINE_H_ 14 #define MLIR_EXECUTIONENGINE_EXECUTIONENGINE_H_ 17 #include "llvm/ExecutionEngine/ObjectCache.h" 18 #include "llvm/ExecutionEngine/Orc/LLJIT.h" 19 #include "llvm/IR/LLVMContext.h" 20 #include "llvm/Support/Error.h" 28 class ExecutionEngine;
39 void notifyObjectCompiled(
const llvm::Module *M,
40 llvm::MemoryBufferRef ObjBuffer)
override;
41 std::unique_ptr<llvm::MemoryBuffer> getObject(
const llvm::Module *M)
override;
44 void dumpToObjectFile(StringRef filename);
47 llvm::StringMap<std::unique_ptr<llvm::MemoryBuffer>> cachedObjects;
73 ModuleOp m, std::function<llvm::Error(llvm::Module *)> transformer = {},
84 template <
typename... Args>
85 llvm::Error invoke(StringRef name, Args &... args);
94 static bool setupTargetTriple(llvm::Module *llvmModule);
97 void dumpToObjectFile(StringRef filename);
102 llvm::LLVMContext llvmContext;
105 std::unique_ptr<llvm::orc::LLJIT> jit;
108 std::unique_ptr<SimpleObjectCache> cache;
111 template <
typename... Args>
112 llvm::Error ExecutionEngine::invoke(StringRef name, Args &... args) {
113 auto expectedFPtr = lookup(name);
115 return expectedFPtr.takeError();
116 auto fptr = *expectedFPtr;
119 (*fptr)(packedArgs.data());
126 #endif // MLIR_EXECUTIONENGINE_EXECUTIONENGINE_H_ Definition: InferTypeOpInterface.cpp:20
Definition: PassRegistry.cpp:413
Definition: ExecutionEngine.h:26
A simple object cache following Lang's LLJITWithObjectCache example.
Definition: ExecutionEngine.h:37
LogicalResult success(bool isSuccess=true)
Definition: LogicalResult.h:25
Definition: ExecutionEngine.h:60
Definition: StandardTypes.h:63