When targeting execute-only and fp-armv8, float constants in a compare resulted
in instruction selection failures in some cases. This is now fixed by using
vmov.f32 where possible, otherwise the floating point constant is lowered into
a integer constant that is moved into a floating point register.
This patch also restores using fpcmp with immediate 0 when fp-armv8 is specified.
Sorry to be a bit of a pain here, but I think that after my FP16 changes went in, we can also expect f16 values here. But hopefully that does not changes much; looks like only thing is that instead of a VMOVSR, we need a VMOVHR (and a test).