diff -Nurp ffmpeg-old/libavcodec/x86/fft_mmx.asm ffmpeg-new/libavcodec/x86/fft_mmx.asm --- ffmpeg-old/libavcodec/x86/fft_mmx.asm 2009-02-13 01:03:22.000000000 +0100 +++ ffmpeg-new/libavcodec/x86/fft_mmx.asm 2009-02-18 18:03:32.000000000 +0100 @@ -446,16 +446,34 @@ fft %+ n %+ %3%2: %endrep %undef n -align 8 -dispatch_tab%3%2: pointer list_of_fft - -; On x86_32, this function does the register saving and restoring for all of fft. -; The others pass args in registers and don't spill anything. +; On x86_32, this function does the register saving and restoring for all of +; fft. The others pass args in registers and don't spill anything. cglobal fft_dispatch%3%2, 2,5,0, z, nbits - lea r2, [dispatch_tab%3%2 GLOBAL] - mov r2, [r2 + (nbitsq-2)*gprsize] + +; FIXME: The following jump table like construction can be solved better, I +; just dont know how to manipulate the program counter +%assign i 2 +%rep 15 + cmp nbitsq, i + je L %+ i %+ %3%2 +%assign i i+1 +%endrep + +%assign i 2 +%rep 15 +L %+ i %+ %3%2: +%assign k 1<