sdp: Include profile-level-id for H264
[ffmpeg.git] / libavcodec / x86 / dct32_sse.asm
index bafe002..9d6169c 100644 (file)
@@ -42,32 +42,24 @@ ps_cos_vec: dd   0.500603,  0.505471,  0.515447,  0.531043
 align 32
 ps_p1p1m1m1: dd 0, 0, 0x80000000, 0x80000000, 0, 0, 0x80000000, 0x80000000
 
-%macro BUTTERFLY_SSE 4
-    movaps %4, %1
-    subps  %1, %2
-    addps  %2, %4
-    mulps  %1, %3
-%endmacro
-
-%macro BUTTERFLY_AVX 4
-    vsubps  %4, %1, %2
-    vaddps  %2, %2, %1
-    vmulps  %1, %4, %3
+%macro BUTTERFLY 4
+    subps  %4, %1, %2
+    addps  %2, %2, %1
+    mulps  %1, %4, %3
 %endmacro
 
-%macro BUTTERFLY0_SSE 5
-    movaps %4, %1
-    shufps %1, %1, %5
-    xorps  %4, %2
+%macro BUTTERFLY0 5
+%if cpuflag(sse2) && notcpuflag(avx)
+    pshufd %4, %1, %5
+    xorps  %1, %2
     addps  %1, %4
     mulps  %1, %3
-%endmacro
-
-%macro BUTTERFLY0_AVX 5
-    vshufps %4, %1, %1, %5
-    vxorps  %1, %1, %2
-    vaddps  %4, %4, %1
-    vmulps  %1, %4, %3
+%else
+    shufps %4, %1, %1, %5
+    xorps  %1, %1, %2
+    addps  %4, %4, %1
+    mulps  %1, %4, %3
+%endif
 %endmacro
 
 %macro BUTTERFLY2 4
@@ -199,14 +191,11 @@ ps_p1p1m1m1: dd 0, 0, 0x80000000, 0x80000000, 0, 0, 0x80000000, 0x80000000
     movss [outq+116], m6
 %endmacro
 
-%define BUTTERFLY  BUTTERFLY_AVX
-%define BUTTERFLY0 BUTTERFLY0_AVX
-
-INIT_YMM
-section .text align=16
-%ifdef HAVE_AVX
+INIT_YMM avx
+SECTION_TEXT
+%if HAVE_AVX
 ; void ff_dct32_float_avx(FFTSample *out, const FFTSample *in)
-cglobal dct32_float_avx, 2,3,8, out, in, tmp
+cglobal dct32_float, 2,3,8, out, in, tmp
     ; pass 1
     vmovaps     m4, [inq+0]
     vinsertf128 m5, m5, [inq+96], 1
@@ -279,10 +268,7 @@ INIT_XMM
     RET
 %endif
 
-%define BUTTERFLY  BUTTERFLY_SSE
-%define BUTTERFLY0 BUTTERFLY0_SSE
-
-%ifdef ARCH_X86_64
+%if ARCH_X86_64
 %define SPILL SWAP
 %define UNSPILL SWAP
 
@@ -404,19 +390,17 @@ INIT_XMM
 %endif
 
 
-INIT_XMM
 ; void ff_dct32_float_sse(FFTSample *out, const FFTSample *in)
-cglobal dct32_float_sse, 2,3,16, out, in, tmp
+%macro DCT32_FUNC 0
+cglobal dct32_float, 2, 3, 16, out, in, tmp
     ; pass 1
 
     movaps      m0, [inq+0]
-    movaps      m1, [inq+112]
-    shufps      m1, m1, 0x1b
+    LOAD_INV    m1, [inq+112]
     BUTTERFLY   m0, m1, [ps_cos_vec], m3
 
     movaps      m7, [inq+64]
-    movaps      m4, [inq+48]
-    shufps      m4, m4, 0x1b
+    LOAD_INV    m4, [inq+48]
     BUTTERFLY   m7, m4, [ps_cos_vec+32], m3
 
     ; pass 2
@@ -427,13 +411,11 @@ cglobal dct32_float_sse, 2,3,16, out, in, tmp
 
     ; pass 1
     movaps      m1, [inq+16]
-    movaps      m6, [inq+96]
-    shufps      m6, m6, 0x1b
+    LOAD_INV    m6, [inq+96]
     BUTTERFLY   m1, m6, [ps_cos_vec+16], m3
 
     movaps      m4, [inq+80]
-    movaps      m5, [inq+32]
-    shufps      m5, m5, 0x1b
+    LOAD_INV    m5, [inq+32]
     BUTTERFLY   m4, m5, [ps_cos_vec+48], m3
 
     ; pass 2
@@ -492,3 +474,18 @@ cglobal dct32_float_sse, 2,3,16, out, in, tmp
     PASS5
     PASS6
     RET
+%endmacro
+
+%macro LOAD_INV 2
+%if cpuflag(sse2)
+    pshufd      %1, %2, 0x1b
+%elif cpuflag(sse)
+    movaps      %1, %2
+    shufps      %1, %1, 0x1b
+%endif
+%endmacro
+
+INIT_XMM sse
+DCT32_FUNC
+INIT_XMM sse2
+DCT32_FUNC