This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: -march prescott: GENERAL_REGS error; but -msseX Ok ?


"sean darcy" <seandarcy@hotmail.com> writes:

> i386/dsputil_mmx.c: In function `h263_h_loop_filter_mmx':
> i386/dsputil_mmx.c:634: error: can't find a register in class `GENERAL_REGS'
> while reloading `asm'
> dmesg | less make[2]: *** [dsputil_mmx.o] Error 1
>
> My cflags are -mtune=prescott -O3 -funit-at-a-time -ffast-math
> -fomit-frame-pointer
>
> But  -O3 -funit-at-a-time -ffast-math -fomit-frame-pointer -mmmx -msse
> -msse2 -msse3 works!
>
> config/i386.c has:
> {"prescott", PROCESSOR_NOCONA, PTA_SSE | PTA_SSE2 | PTA_SSE3
> 				        | PTA_MMX | PTA_PREFETCH_SSE}
>
> So is the only reason prescott doesn't work is prefetch-sse.  

No, that is a red herring. The different instruction scheduling causes
the register allocator to randomly fail or not. There's no way for us
to fix this reliably, the asm must be changed to constrain the
register allocator less.

-- 
	Falk


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]