[MPlayer-dev-eng] imdct.c and gcc 3.4.0/3.5

D Richard Felker III dalias at aerifal.cx
Sun May 2 18:22:49 CEST 2004


On Sun, May 02, 2004 at 04:04:28AM -0500, Zoltan Hidvegi wrote:
> Rich wrote:
> > On Sun, May 02, 2004 at 04:32:15AM +0200, Michael Niedermayer wrote:
> > > Hi
> > > 
> > > On Saturday 01 May 2004 22:31, D Richard Felker III wrote:
> > > > On Sat, May 01, 2004 at 10:26:28PM +0200, Piotr Neuman wrote:
> > > > > Warnings (3.4.0):
> > > > >
> > > > > imdct.c: In function `imdct_do_512_sse':
> > > > > imdct.c:937: warning: use of memory input without lvalue in asm operand 1
> > > > > is deprecated
> > > > > imdct.c:937: warning: use of memory input without lvalue in asm operand 2
> > > > > is deprecated
> > > > >
> > > > > Errors (3.5):
> > > > >
> > > > > imdct.c: In function `imdct_do_512_sse':
> > > > > imdct.c:937: error: memory input 1 is not directly addressable
> > > > > imdct.c:937: error: memory input 2 is not directly addressable
> > > >
> > > > I asked Piotr to post this. I fixed all the other gcc 3.5 errors he
> > > > pointed out to me, but this one is gcc being stupid, I think. I know
> > > > how to "fix" it, but I'm hesitant to touch the sse code since I can't
> > > > benchmark it. Is it ok to change these "m" constraints to "r"??
> 
> Changing to "r" would require more registers.
> 
> > > ask gcc :)
> > > mine said: imdct.c:937: error: can't find a register in class `GENERAL_REGS' 
> > > while reloading `asm'
> > 
> > BTW, is it possible to pass in "m"(buf) and use 128+%1 in the asm,
> > rather than trying to pass in "m"(buf+128)?
> 
> No, because "m" could be e.g. (%eax), and AFAIK, 128+(%eax) is not a

IMO gcc should substitute 0(%eax) in this case, not just (%eax). But I
don't know for sure because gcc can be very stupid sometimes...

Rich




More information about the MPlayer-dev-eng mailing list