Very much WIP, posting for discussion, will cleanup based on input.
Key question: Is minimal phys reg the right helper routine to be using here? The ARM backend change makes me wonder. It does match what the x86 backend uses for non-GPR spills along the "normal" spill insertion path.
SplitCSR is an off by default mode which let's the register allocator handle spilling CSRs as normal vregs. This really should be the default, but for historical reasons isn't.
This change tries to remove the target specific differences from the copied implementations. Once this is in, a simple NFC change will sink a shared implementation into the base class and delete all of the overrides.
Put the dump changes into a different patch.