I had talked to @jroesch , and we think that there is two thing: the function (what we currently have), and the pass. the pass is essentially a function from (Module, PassContext) to Module (yes, only Module), while the function can has different form - it may take an expr, or it may take a module, or even more info, etc. the pass also should probably be done in C++, as we have the C++ build system merged recently.
-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/dmlc/tvm/issues/3146#issuecomment-491057410