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

Michael Niedermayer michaelni at gmx.at
Sun May 2 14:28:18 CEST 2004


Hi

On Sunday 02 May 2004 11:04, 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
> 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.
rejected

buf is a constant, but it shouldnt be, it makes it impossible to decode more 
then a single a52 stream at the same time
according to cvsweb it always was in mplayer cvs though but its not in current 
liba52 cvs

[...]
-- 
Michael
level[i]= get_vlc(); i+=get_vlc();		(violates patent EP0266049)
median(mv[y-1][x], mv[y][x-1], mv[y+1][x+1]);	(violates patent #5,905,535)
buf[i]= qp - buf[i-1];				(violates patent #?)
for more examples, see http://mplayerhq.hu/~michael/patent.html
stop it, see http://petition.eurolinux.org & http://petition.ffii.org/eubsa/en




More information about the MPlayer-dev-eng mailing list