[FFmpeg-devel] The state of FATE

Måns Rullgård mans
Sun Nov 1 18:15:51 CET 2009


matthieu castet <castet.matthieu at free.fr> writes:

> matthieu castet <castet.matthieu <at> free.fr> writes:
>
>> 
>> M?ns Rullg?rd <mans <at> mansr.com> writes:
>> 
>> > x86_32
>> > ------
>> > Linux, llvm svn 79390: all tests pass
>> > - Using --arch=c, why?
>> 
>> > x86_64
>> > ------
>> > 
>> > Linux, llvm svn 79390: all pass
>> > - Using --arch=c, why?
>> > 
>> 
>> Because llvm had a broken asm inline support.
>> May be we could try newer version (last 2.6 release) to check 
>> if situation improved.
>> 
> After a quick test, clang :
> - doesn't like 64 bits configure test 'int test[sizeof(char*) - 7];'. This is
> because 'sizeof(char*) - 7' is seen as a unsigned integer (even on gcc) and it
> allocates a very big array !

That test is meant to fail if sizeof(char*) < 8.  The exact reason for
failing is irrelevant.

> - gets "Ran out of registers" error [1]
>
> [1]
> clang -DHAVE_AV_CONFIG_H -I. -I"/tmp/ffmpeg" -D_ISOC99_SOURCE
> -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -std=c99
> -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno-switch
> -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign
> -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef -O3 -fno-math-errno
> -fno-signed-zeros -Qunused-arguments       -MMD -c -o
> libavcodec/x86/mpegvideo_mmx.o libavcodec/x86/mpegvideo_mmx.c
> fatal error: error in backend: Ran out of registers during register allocation!
> Please check your inline asm statement for invalid constraints:
> INLINEASM <es:movd %eax, %xmm3              
> [...]
> 	>, 10, %EAX<def>, 9, %reg1346<kill>, 9, %reg1299<kill>, 9, %reg1343<kill>, 9,
> %reg1341<kill>, 9, %reg1344<kill>, 2147483657, %EAX, 14,
> %EFLAGS<earlyclobber,def,dead> [dbg:
> /tmp/ffmpeg/libavcodec/x86/mpegvideo_mmx_template.c,152,9]

The constraints for that asm look like this:

            : "+a" (last_non_zero_p1)
            : "r" (block+64), "r" (qmat), "r" (bias),
              "r" (inv_zigzag_direct16+64), "r" (temp_block+64)

I count only 6 registers there...

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list