I want to followup that the general infrastructure of pattern matching and rewriting does not conflict with AutoTVM.
It is important to follow a composite view of the infrastructure, where BYOC becomes natural feature by combining parts of the infrastructure together, rather than a monotholic piece. Specifically, BYOC involves a few steps
- S0: Graph pattern detection and partitioning
- S1: Sub function customized transformation
- S2: Sub function to customized code backend
Only S2 is really specific to the hardware backend. For example, we could use the generic pattern language to perform S0 and S1 and still use the TIR for further lowering. This kind of compositability is where we are heading towards