[pulseaudio-discuss] ARM NEON patches

Peter Meerwald pmeerw at pmeerw.net
Thu Jan 12 08:20:02 PST 2012


Hello,

here is some optimized code for ARM NEON for sconv, svolume and remap 
(benchmarks below for a Beagleboard-XM)

I put this up for review, although there are still some rough edges:
* there is no configure option for ARM NEON yet (there is none for 
  SSE/MMX as well); NEON can be disabled at runtime by defining env. 
  var. PULSE_NO_SIMD; ARM NEON code depends on __ARM_NEON__ #defined 
  by the compiler
* I have no runtime comparison for the orc svolume code yet (note that
  orc is not used on ARM yet, although it should be possible)
* I would like to be able to test the svolume/remap code against the
  C reference implementation, however, those are easily available/exposed
  (or I don't know how to get hold of a function pointer)
* the runtime of the existing ARMv6 implementation of volume_s16ne() looks
  very strange, has this been tested recently?


sconv_s16le_to_float()
NEON: 1831 usec.
ref: 18311 usec.

sconv_s16le_from_float()
NEON: 3754 usec.
ref: 64580 usec.

volume_float32ne()
NEON: 15716 usec.
ref: 59659 usec.

volume_s16ne()
NEON: 9002 usec.
ARM: 313570 usec.
ref: 20508 usec.

remap_mono_to_stereo(float)
NEON: 41533 usec.
ref: 51117 usec.

remap_mono_to_stereo(s16)
NEON: 16022 usec.
ref: 38086 usec.

regards, p.



More information about the pulseaudio-discuss mailing list