The impilcation of backend optimization

I am new to TVM and have noticed that at the stage of back-end optimization / hardware dependent opt, TVM will do many loop optimizations and other schedule. However, general compilers such as llvm or NVCC can also make loop optimizations. So why don’t we directly pass the original code to llvm and depend on its pass?

This question is equivalent to how do we leverage TIR to optimize the source code more efficiently than traditional compiler (llvm)?