At the moment if AArch64TargetLowering::ReconstructShuffle encounters
a scalable vector it just bails out of the optimisation entirely.
However, there are cases when we can make the transformation succeed
and produce far better code than if we just immediately bail out.
You can see the codegen improvement in the following tests:
CodeGen/AArch64/sve-fixed-length-reshuffle.ll
I have tried to highlight in sve-fixed-length-reshuffle.ll those tests
that exercise the AArch64TargetLowering::ReconstructShuffle code path
when the transformation succeeds or fails.
When protecting code can you check the positive rather than the negative. So if (SrcVTSize.isFixed() && ...). Looking at TypeSize suggests there's no such function, but I think that's an omission.