InstanceOp vs. HWInstanceOp - CIRCT (fsm dialect)

It’s not clear to me from docs/td files/cpp files how InstanceOp and HWInstanceOp are different in fsm dialect (CIRCT)