[RFC] Executing multiple MLIR modules

What needs to happen here is effectively compiling two separate MLIR modules which need to be linked together. As George mentioned, this would mean symbol resolution etc. Stepping out of the specific need here, I thought it might be useful to modify the ExecutionEngine to take multiple MLIR modules, compile each down to LLVM, and use LLVM to link it. This was discussed in previous post as well, and @ftynse also mentioned that compiling to MLIR modules to LLVM and linking it as an option (Nested modules translation and symbol table - #6 by ftynse). Is there a specific issue with this generalization? It could be beneficial to other use cases as well.

The specific module structure mentioned above is specific to the mlir-spirv-runner . It makes sense to me to have the SPIR-V runner separate the two modules out into two separate compilation units and pass them into the JitEngine.