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

Zoltan Hidvegi mplayer at hzoli.2y.net
Sun May 2 11:04:28 CEST 2004


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
legal syntax.  But in this specific case, it can work, because buf is
a constant, but this means you can just use the "i" constraint.  Also,
two_m_plus_one is twice two_m, so the attached patch should fix these
warnings.

Zoli
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: imdct-asm.patch
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/attachments/20040502/4c17622b/attachment.txt>


More information about the MPlayer-dev-eng mailing list