some facts:
1. integer code generated by 5c and 5g only requires ARMv5, so in theory, a go
program that doesn't use floating point should be runnable on any ARMv5+
processors.
2. fp code generated by 5c and 5g requires VFPv3 (or VFPv1 if we disable one
type of instruction [vmov (imm)]).
3. our runtime and all the low-level packages are portable across ARMv5+
processors.
my conclusion: we only need to test at runtime the existence and version of VFP
(runtime.hwcap has this kind of information), and we only need two (or three) type
of binaries (soft-fp, VFPv1/VFPv2, and perhaps VFPv3&NEON); if we want to relieve
the burden on the user, we can automatically detect whether there is a VFP and
always use first two types; advanced user can select the last type manually if he
is aware of the problem.