[Ffmpeg-devel] [RFC] svq1 very slow encoding
Loren Merritt
lorenm
Sat Mar 31 09:07:34 CEST 2007
On Fri, 30 Mar 2007, Trent Piepho wrote:
> On Thu, 29 Mar 2007, Loren Merritt wrote:
>
> static int ssd_int8_vs_int16_mmx(int8_t *pix1, int16_t *pix2, int size){
> + int sum;
> + long i=size;
> + asm volatile(
> ...
> + "movd %%mm4, %1 \n"
> + :"+r"(i), "=r"(sum)
> + :"r"(pix1), "r"(pix2)
> + );
> + return sum;
>
> Shouldn't that be "+&r"(i)?
Maybe. I've never used earlyclobber, so if it is needed then there's a
whole bunch of theoretically incorrect asm in lavc.
> On x86-64, could "int sum" be put in a 64-bit register? Which would
> generate something like "movd %mm4, %rax". Don't have a 64-bit system, but
> can you use movd with a 64-bit general purpose register? If you can, isn't
> it still wrong, since %rax will have garbage in the top 32 bits?
int is 32bit, and the register name generated by a bare %1 is the
same size as the value or variable it's associated with.
All 32bit ops zero out the high bits of the destination. And even if they
didn't (e.g. if sum was 16bit), gcc will add any necessary extension.
--Loren Merritt
More information about the ffmpeg-devel
mailing list