%include "libavutil/x86/x86inc.asm"
-%ifdef ARCH_X86_64
+%if ARCH_X86_64
%define pointer resq
%else
%define pointer resd
%endif
+SECTION_RODATA
+
struc FFTContext
.nbits: resd 1
.reverse: resd 1
.tsin: pointer 1
endstruc
-SECTION_RODATA
-
%define M_SQRT1_2 0.70710678118654752440
%define M_COS_PI_1_8 0.923879532511287
%define M_COS_PI_3_8 0.38268343236509
%assign i i<<1
%endrep
-%ifdef ARCH_X86_64
+%if ARCH_X86_64
%define pointer dq
%else
%define pointer dd
INIT_YMM
-%ifdef HAVE_AVX
+%if HAVE_AVX
align 16
fft8_avx:
mova m0, Z(0)
INIT_YMM
-%ifdef HAVE_AVX
+%if HAVE_AVX
%macro INTERL_AVX 5
vunpckhps %3, %2, %1
vunpcklps %2, %2, %1
RET
%endmacro ; DECL_FFT
-%ifdef HAVE_AVX
+%if HAVE_AVX
INIT_YMM
DECL_FFT 6, _avx
DECL_FFT 6, _avx, _interleave
%endmacro
%macro DECL_IMDCT 2
-cglobal imdct_half%1, 3,7,8; FFTContext *s, FFTSample *output, const FFTSample *input
-%ifdef ARCH_X86_64
-%define rrevtab r10
-%define rtcos r11
-%define rtsin r12
- push r12
- push r13
- push r14
+cglobal imdct_half%1, 3,12,8; FFTContext *s, FFTSample *output, const FFTSample *input
+%if ARCH_X86_64
+%define rrevtab r7
+%define rtcos r8
+%define rtsin r9
%else
%define rrevtab r6
%define rtsin r6
mov rtsin, [r0+FFTContext.tsin]
add rtcos, r3
add rtsin, r3
-%ifndef ARCH_X86_64
+%if ARCH_X86_64 == 0
push rtcos
push rtsin
%endif
shr r3, 1
mov rrevtab, [r0+FFTContext.revtab]
add rrevtab, r3
-%ifndef ARCH_X86_64
+%if ARCH_X86_64 == 0
push rrevtab
%endif
sub r3, 4
-%ifdef ARCH_X86_64
+%if ARCH_X86_64
xor r4, r4
sub r4, r3
%endif
.pre:
-%ifndef ARCH_X86_64
+%if ARCH_X86_64 == 0
;unspill
xor r4, r4
sub r4, r3
%endif
PREROTATER r4, r3, r2, rtcos, rtsin
-%ifdef ARCH_X86_64
+%if ARCH_X86_64
movzx r5, word [rrevtab+r4-4]
movzx r6, word [rrevtab+r4-2]
- movzx r13, word [rrevtab+r3]
- movzx r14, word [rrevtab+r3+2]
+ movzx r10, word [rrevtab+r3]
+ movzx r11, word [rrevtab+r3+2]
movlps [r1+r5 *8], xmm0
movhps [r1+r6 *8], xmm0
- movlps [r1+r13*8], xmm1
- movhps [r1+r14*8], xmm1
+ movlps [r1+r10*8], xmm1
+ movhps [r1+r11*8], xmm1
add r4, 4
%else
mov r6, [esp]
mov r0d, [r5+FFTContext.mdctsize]
add r6, r0
shr r0, 1
-%ifndef ARCH_X86_64
+%if ARCH_X86_64 == 0
%define rtcos r2
%define rtsin r3
mov rtcos, [esp+8]
mov r1, -mmsize
sub r1, r0
%2 r0, r1, r6, rtcos, rtsin
-%ifdef ARCH_X86_64
- pop r14
- pop r13
- pop r12
-%else
+%if ARCH_X86_64 == 0
add esp, 12
%endif
%ifidn avx_enabled, 1
INIT_YMM
-%ifdef HAVE_AVX
+%if HAVE_AVX
DECL_IMDCT _avx, POSROTATESHUF_AVX
%endif