Android supports ARMv5TE and ARMv7-A. Read the NDK docs about supported ARCH ARC and ABI, available at $NDK/docs/CPU-ARCH-ABIS.html .
ARMv5TE is by default and does not provide you any floating point hardware support, you can see the Android NDK page about it. You must add ARMv7-A support to your application to get the most support from the hardware.
ARMv6 is somewhere in the middle, and if you want to target these devices, you have to do some Android.mk tricks.
Currently, if you are coding a modern application, you are probably planning to use new devices with an ARMv7-A processor with VFPv3 and NEON. If you just want to support ARMv6, you should use ARMv5TE to cover them. If you want to take advantage of a little extra support for ARMv6, you will completely lose support for ARMv5TE.
I compiled your simple line of code using the NDK r8c and it can create me a binary as shown below. The best ARM VFP allows your application to multiply and accumulate instruction, which is fmac , and the compiler can easily fix them.
00000000 <f>: 0: ee607aa2 fmuls s15, s1, s5 4: ed9f7a05 flds s14, [pc,
It might be best to split your statement into several pieces to allow for double release, but you can do it in C.
You cannot create miracles just by using assembly, however the compiler can also create huge shit. GCC and ARM are not as good as GCC and Intel. Especially in vectorization, using NEON. It is always good to check what the compiler produces if you need to perform high-performance procedures.
source share