Is the call to LowerFixedLengthVectorSelectToSVE strictly necessary? I would have thought return DAG.getNode(ISD::VSELECT.... would be sufficient. We'll then iterate back into the custom lowering code, if required, to lower the VSELECT.
Is this safe? I know for larger than NEON vectors we'll truncate the mask and thus only care about the bottom bit, however, you're tests show that for NEON sized vectors bif is used and so every bit of the mask is meaningful. I believe this is because it expects the mask to be extended based on setBooleanVectorContents(ZeroOrNegativeOneBooleanContent). Which means a sign extend must be used here to maintain that requirement?