[Speex-dev] speex on TI C5x fixed-point DSP

Jamey Hicks jamey.hicks at hp.com
Tue Nov 2 18:42:20 PST 2004


Jean-Marc Valin wrote:

>>It took all of the DSP at that speed.  The C5509 will go up to 200MHz, 
>>so I guess it's 2/3 of the DSP.  We're going to profile the code to see 
>>if we can speed it up.
>>    
>>
>
>I would think it's possible to make it much faster. The first thing I'd
>look is the fixed-point macros, like MUL16_16 and make sure they don't
>do something much more complicated than what they're supposed to do
>(e.g. compute on 32 bit operands), because there's no way to tell C to
>do things like "multiply two 16-bit values that will have a result in 32
>bits". 
>
I have most of these right.  TI's C compiler generates a 16x16=>32 
multiply from the following idiom:

  int32_t z = (int32_t)(int16_t)x * (int32_t)(int16_t)y;

But I see there are still some calls to the 32x32 multiply routine in 
one of the filters.  It looks like the 16x32 multiplies to which you 
refer below.

>Also, Speex uses lots of 16x32 multiplications, which your DSP
>may do more efficiently in other ways. Of course, after that, I can also
>point out several routines that would benefit the most from
>optimizations (mainly the filters).
>  
>
That would be helpful, if there are some key ones to start on.

Jamey



More information about the Speex-dev mailing list