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.

Reply via email to