tom abcd
2006-Jan-24 07:33 UTC
[Speex-dev] Compiler warnings with GCC 3.4.4 and perfomance question on a Arm 7
> OK, I forgot to update the ARM4 code. That should definitely be fixed > (otherwise it's not going to work).If this is not going to work then why does it work on my Arm? Any quick fix I can do for now?> > The second warning is in ltp_arm4.h in "pitch_xcorr(" getting a warning of: > > "matching constraint does not allow a register" on the " __asm__ > > __volatile__ " line. I have no idea how to fix this warning. > > can you give me more info on this?Not sure what info will help but here it goes... I am using GCC 3.4.4 compiling ltp.c I get 8 warnings and all of them seem to be when "#define OVERRIDE_PITCH_XCORR static void pitch_xcorr(const spx_word16_t *_x, const spx_word16_t *_y, spx_word32_t *corr, int len, int nb_pitch, char *stack) " is included from ltp_arm4.h The error places the cursor on the __asm__ __volatile__ ( line in the function. I am compiling with Optimization Level 1. I did a quick google search and found this where someone else had a similar problem when switching from 3.2.3 to GCC 3.4.0. http://gcc.gnu.org/ml/gcc/2004-04/msg01455.html So what version of GCC are you using?> > I have found the performance/MHz of ARM CPUs is extremely variable. > Given that, the results you're getting may make sense. Just be aware > that there are still a few float operations left in wideband, so you > might be hurt a bit by that. >Any suggestions as to which functions I should look at for the float operations to change to Integer? (assuming it is a simple task to change the code from float to int or if I can copy how you change the same kind of statements in the narrowband float to int conversion otherwise I will probability will not figure it out and will just live with the performance I have now.) Thanks Tom
Jean-Marc Valin
2006-Jan-24 20:37 UTC
[Speex-dev] Compiler warnings with GCC 3.4.4 and perfomance question on a Arm 7
On Tue, 2006-01-24 at 10:33 -0500, tom abcd wrote:> > OK, I forgot to update the ARM4 code. That should definitely be fixed > > (otherwise it's not going to work). > > If this is not going to work then why does it work on my Arm? Any > quick fix I can do for now?Didn't you mention you were only using the decoder? That function is used in the encoder only.> is included from ltp_arm4.h > The error places the cursor on the __asm__ __volatile__ ( > line in the function. I am compiling with Optimization Level 1. > > I did a quick google search and found this where someone else had a > similar problem when switching from 3.2.3 to GCC 3.4.0. > http://gcc.gnu.org/ml/gcc/2004-04/msg01455.htmlI'll need to have a closer look at this to understand what's really going on. I suspect the generated code is still right, though.> So what version of GCC are you using?I was using gcc 3.3 at the time I wrote this code.> Any suggestions as to which functions I should look at for the float > operations to change to Integer? (assuming it is a simple task to > change the code from float to int or if I can copy how you change the > same kind of statements in the narrowband float to int conversion > otherwise I will probability will not figure it out and will just live > with the performance I have now.)I think most of the float ops left are in sb_celp.c but float->fixed conversion isn't trivial, since you always need to make sure that the quality isn't degraded by the loss of accuracy (for each change made). Jean-Marc
tom abcd
2006-Jan-25 06:44 UTC
[Speex-dev] Compiler warnings with GCC 3.4.4 and perfomance question on a Arm 7
> Didn't you mention you were only using the decoder? That function is > used in the encoder only.Yes I am only using the decoder - now it make sense why it works (I did not check how the function was used only that I got the warning.)> I'll need to have a closer look at this to understand what's really > going on. I suspect the generated code is still right, though. >Ok - will just use as is for now then> > I think most of the float ops left are in sb_celp.c but float->fixed > conversion isn't trivial, since you always need to make sure that the > quality isn't degraded by the loss of accuracy (for each change made).Sounds like this is beyond what I want to try to do and I have a working solution now so I just use this as is. Thanks Tom