[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Debian armhf: libgsm and speex build integer fixed-point versions on arm*



On Sun, Apr 3, 2011 at 12:34 AM, Martin Guy <martinwguy@gmail.com> wrote:
> Hi!
>   Revisiting my armel patches for lenny/Crunch, I noticed that libgsm
> buillds its integer version on arm*:
>
> debian/rules:
>
> ifneq (,$(filter arm%,$(DEB_HOST_ARCH)))
> MULTYPE=''
> else
> MULTYPE='-DUSE_FLOAT_MUL'
> endif
>
> The same is true of speex:
>
> ifeq ($(DEB_HOST_ARCH_CPU),arm)
> objdir             = $(objdir_fixedpoint)
> EXTRA_CONFIG_FLAGS = --enable-arm4-asm
> endif
>
> When I compiled these for MaverickCrunch FPU, I found that the
> fixed-point version was faster than the Crunch version (but the Crunch
> is a fairly slow FPU)
> I don't know what the speed difference would be for armhf - the more
> powerful FPU may win.

Short answer is 'it depends'.  I had a go with this a few months ago
and got the following results on a 30 minute 16000 Hz wideband
(sub-band CELP) mode (stereo) sample:

Cortex-A9: 19.749 s (float), 20.434 s (--enable-fixed), 19.439 s
(--enable-fixed --enable-arm5e-asm)
Cortex-A8: 119 s (float), 32.676 s (--enable-fixed), 35.359 s
(--enable-fixed --enable-arm5e-asm)

The results were measured using time src/speexdec ~/foo.spx - >
/dev/null and taking the best of five runs.  I don't know why the
ARMv5 code is slower - it could be that the input file isn't
triggering the right code paths.  --enable-arm5e-asm implicitly also
enables the ARMv4 code.

-- Michael


Reply to: