In the both the android and the general ARM discussion I'm suffering from a bit of confusion, and I'm hoping that someone can tell me whether I'm getting this right...
There are two floating point ABIs for arm-linux corresponding to the calling conventions used for passing floating point parameters (memory vs registers, I presume). These are somewhat independent of whether a hardware FPU is used. Here's where I start to get confused. Tell me if I've got this right. The gcc default is to use the soft float ABI, which results in the generation of calls to implement emulations of floating point path. If one specifies -mfloat-abi=softfp the compiler generates hardware floating point instructions but uses the softfp call convention. If a program of this type is run without a VFP present it generates a illegal instruction exception and the program quits, rather than there being an VFP emulator that catches the exception and emulates the code. These two types of code can be mixed. The hard float is chosen by -mfloat-abi=hard. For this a VFP is required, but it is the most efficient mode. FFTW 3.3.3, for some reason, thinks this mode is incompatible with NEON SIMD code, though. So if I wanted to target the widest variety of devices. I'd make one executable with the default (software) FP. I'd make one with softfp including NEON code in FFTW. And I'd make one for hardfp without NEON code in FFTW. I hope there's something in the BOINC headers or host record that would tell me which one to send. Android throws in another twist in that pre-ARMv7 devices can only use software floating point. It's not clear from the documents whether all androidabi-v7a devices are required to have a VFP or whether it's still optional and whether their GCC port defaults to hardfp generation. It's almost getting back to the early days of SUN when every workstation had a different FPU. Even with software float a phone is faster than a Sun-2, though. Anyhow, if anyone wants to clear up my misconceptions, please do. _______________________________________________ boinc_dev mailing list [email protected] http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, visit the above URL and (near bottom of page) enter your email address.
