First show the error message and root cause:
error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
error: unknown register name ‘%xmm0’ in ‘asm’
affetcted files
libavcodec/x86/mpegvideo_mmx.c
libavcodec/x86/mpegvideo_mmx_template.c
Just cut the bottom half source into another source file and compile it .
I think , it is a gcc bug.
2. undefiend symbols
when use libavcodec, it report that these symbols can't be found in static library.
00000000 T ff_float_interleave_c
U ff_float_interleave2_mmx
U ff_float_interleave2_sse
U ff_float_interleave6_mmx
U ff_float_interleave6_sse
U ff_float_interleave_c
U ff_float_to_int16_3dnow
U ff_float_to_int16_interleave2_3dnow
U ff_float_to_int16_interleave2_sse
U ff_float_to_int16_interleave2_sse2
U ff_float_to_int16_interleave6_3dn2
U ff_float_to_int16_interleave6_3dnow
U ff_float_to_int16_interleave6_sse
U ff_float_to_int16_sse
U ff_float_to_int16_sse2
This is occus when assebly files are not compiled into libavcodec.