[FFmpeg-devel] [RFC/HACK] textrel-free x86_64 fft_mmx.asm
Reimar Döffinger
Reimar.Doeffinger
Tue Nov 10 16:50:06 CET 2009
Hello,
it is rather ugly and might affect speed a bit, but it is the only
remaining textrel in x86_64 FFmpeg with --enable-pic.
I really wished there was a RIP-relative, register-argument call.
I'm sure it can be made at least a bit less ugly, this is my first
attempt at both that kind of thing and yasm.
-------------- next part --------------
Index: libavcodec/x86/fft_mmx.asm
===================================================================
--- libavcodec/x86/fft_mmx.asm (revision 20496)
+++ libavcodec/x86/fft_mmx.asm (working copy)
@@ -421,16 +421,21 @@
%macro DECL_FFT 2-3 ; nbits, cpu, suffix
-%xdefine list_of_fft fft4%2, fft8%2
+%ifdef PIC
+%define fft_rel - fft_call%3%2
+%else
+%define fft_rel
+%endif
+%xdefine list_of_fft fft4%2 fft_rel, fft8%2 fft_rel
%if %1==5
-%xdefine list_of_fft list_of_fft, fft16%2
+%xdefine list_of_fft list_of_fft, fft16%2 fft_rel
%endif
%assign n 1<<%1
%rep 17-%1
%assign n2 n/2
%assign n4 n/4
-%xdefine list_of_fft list_of_fft, fft %+ n %+ %3%2
+%xdefine list_of_fft list_of_fft, fft %+ n %+ %3%2 fft_rel
align 16
fft %+ n %+ %3%2:
@@ -462,6 +467,11 @@
cglobal fft_dispatch%3%2, 2,5,8, z, nbits
lea r2, [dispatch_tab%3%2 GLOBAL]
mov r2, [r2 + (nbitsq-2)*gprsize]
+%ifdef PIC
+fft_call%3%2
+ lea r3, [fft_call%3%2 GLOBAL]
+ add r2, r3
+%endif
call r2
RET
%endmacro ; DECL_FFT
More information about the ffmpeg-devel
mailing list