We've been shipping implementations of fp16 libcalls in MacOS since 10.10 in 2014 I believe, and there are apps around using them so for the libcall emulation we need to stick with the old ABI that uses GPRs. We think normal function calls should be unaffected.
Fortunately it's not that big of a problem since performance is going to be terrible anyway, just a bit of an annoyance in ISelLowering. The alternative implementation I considered was adding a new calling convention and using setLibcallCallingConv, less code (and more obviously correct if-conditions) but puts gory details into include. I'd be happy to switch if people think I went the wrong way.
There's a bit of test churn as I switched the generic failures over to using a triple with the common case rather than this exceptional behaviour, and that changed some of the names and exact comment format.
I assume we have set it legal under FP16, why do we still check here?