Target-independent code only knows how to spill to the stack; instead, use AArch64ISD::REINTERPRET_CAST.
You may as well just remove the "Cannot cast between unpacked scalable vector types" assert from getSVESafeBitCast. The original intent of the assert was to catch cases where getSVESafeBitCast wasn't needed because a single REINTERPRET_CAST could do the job. The assert is clearly too generic but at the same time I deliberately didn't add isel patterns for the unpacked-unpacked-fp cases, so I don't see a real benefit to tightening up the assert.
 I know this is not consistent with i1 handling.
Out of interest are the loads fundamental to these three tests?
Sure, will do.
When I was constructing the tests, I had to be careful to make sure we actually hit the codepath in question. In the simplest cases, the bitcast gets combined away.
Maybe it's not necessary for the final form these tests ended up with, though; I'll check.