One thing that is worth considering is how are we going to parse a module with mixed relay and tir functions (or those with external ones).
@tvm.script
class MixedModule:
def relay_func(x: ty.Tensor):
return relay.call_tir_dest_passing(tir_func, x)
def tir_func(x: ty.handle)
...
Having such mixed module(and unified design) is a motivation for a common decorator. Although I agree we need to think about ways to distinguish the two.