What's the relationship between "TargetRegisterInfo" and "MCRegisterInfo"?

Hi everyone.

I’m having a hard time understanding why is the “TargetRegisterInfo” abstraction necessary. I think the “MCRegisterInfo” may be enough. And the source code implicates that “TargetRegisterInfo” is a wrapper for “MCRegisterInfo”.

Does the “TargetRegisterInfo” abstraction hide more details than the “MCRegisterInfo” abstraction? Or maybe the community plan to deprecate “TargetRegisterInfo” in the future?