ARM Cortex-A8: Whats the difference between VFP and NEON

There are quite some difference between the two. Neon is a SIMD (Single Instruction Multiple Data) accelerator processor as part of the ARM core. It means that during the execution of one instruction the same operation will occur on up to 16 data sets in parallel. Since there is parallelism inside the Neon, you can get more MIPS or FLOPS out of Neon than you can a standard SISD processor running at the same clock rate.

The biggest benefit of Neon is if you want to execute operation with vectors, i.e. video encoding/decoding. Also it can perform single precision floating point(float) operations in parallel.

VFP is a classic floating point hardware accelerator. It is not a parallel architecture like Neon. Basically it performs one operation on one set of inputs and returns one output. It’s purpose is to speed up floating point calculations. It supports single and double precision floating point.

You have 3 possibilities to use Neon:

  • use intrinsics functions #include “arm_neon.h”
  • inline the assembly code
  • let the gcc to do the optimizations for you by providing -mfpu=neon as argument (gcc 4.5 is good on this)

Leave a Comment