Why RNN Operator(e.g., LSTM, GRU) Be Unrolled by Relay Frontend?

I am confused about why we haven’t defined the RNN operators(e.g., LSTM, GRU) in Relay IR, from the code now each frontend unrolled these operators to lots of basic operators, from below posts I have known they can be unrolled because the length of these cell are fixed at the compiled time.

How to use Relay Control Flow? - Questions - Apache TVM Discuss

Auto-scheduling for lstm operator - Questions - Apache TVM Discuss

BYOC can’t map these RNN operators, because they are unrolled. So I want to know why don’t we defined these operators in Relay and do the unroll thing in a pass, so BYOC can offload them to external tools? And the unroll logic only need to be implemented once instead of each frontend.

@masahi, @junrushao, @jroesch, @jwfromm, @haichen

Thanks.