Thanks @kparzysz-quic . Sorry for the delayed reply since we are taking break here.
Overall I like the direction we are going. Just to figure out the spectrum of possible APIs My main question is how are we going to interact with multiple ParseIR calls. Some example would be helpful. For example, is it OK for us to have nested LLVMScope ```c++ void Example() { LLVMScope scope1(target); { // what is the effect here, seems mod_data1 is immediate in scope auto mod_data1 = LLVMScope::ParseIR(name); } } ``` I also wonder if there is a way to "defer" the scope initialization. e.g. can LLVMModule be created, stored in the LLVMScope, but the target does not take in-effect until we enter the scope. We call InitializeLLVM in the constructor of LLVMTarget, but do other things like option setting in the enter stage.Something like ```c++ void Example() { LLVMTarget target1(target); auto mod_data = LLVMTarget::ParseIR(name); // enter target1 scope With<LLVMTarget> scope1(target1); { // entering target in mod_data With<LLVMTarget> scope2(mod_data); } } ``` I think the main question is how coupled the operations related to LLVM are. -- Reply to this email directly or view it on GitHub: https://github.com/apache/tvm-rfcs/pull/83#issuecomment-1178983089 You are receiving this because you are subscribed to this thread. Message ID: <apache/tvm-rfcs/pull/83/c1178983...@github.com>