OSDN Git Service

Merge commit '3bfdee00cd92ff07c364d4901c4aefda32780756'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 6 Mar 2014 13:09:48 +0000 (14:09 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 6 Mar 2014 13:10:27 +0000 (14:10 +0100)
* commit '3bfdee00cd92ff07c364d4901c4aefda32780756':
  x86: dcadsp: Fix linking with yasm and optimizations disabled

Conflicts:
libavcodec/x86/dcadsp_init.c

See: 206167a295a5c28cec3c38f7308835b0b7e0618f
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/x86/dcadsp_init.c

@@@ -56,34 -56,26 +56,34 @@@ av_cold void ff_dcadsp_init_x86(DCADSPC
      }
  }
  
 -void ff_synth_filter_inner_sse2(float *synth_buf_ptr, float synth_buf2[32],
 -                                const float window[512],
 -                                float out[32], intptr_t offset, float scale);
  
 -#if HAVE_YASM
 -static void synth_filter_sse2(FFTContext *imdct,
 -                              float *synth_buf_ptr, int *synth_buf_offset,
 -                              float synth_buf2[32], const float window[512],
 -                              float out[32], const float in[32], float scale)
 -{
 -    float *synth_buf= synth_buf_ptr + *synth_buf_offset;
 -
 -    imdct->imdct_half(imdct, synth_buf, in);
 -
 -    ff_synth_filter_inner_sse2(synth_buf, synth_buf2, window,
 -                               out, *synth_buf_offset, scale);
 +#define SYNTH_FILTER_FUNC(opt)                                                 \
 +void ff_synth_filter_inner_##opt(float *synth_buf_ptr, float synth_buf2[32],   \
 +                                 const float window[512],                      \
 +                                 float out[32], intptr_t offset, float scale); \
 +static void synth_filter_##opt(FFTContext *imdct,                              \
 +                              float *synth_buf_ptr, int *synth_buf_offset,     \
 +                              float synth_buf2[32], const float window[512],   \
 +                              float out[32], const float in[32], float scale)  \
 +{                                                                              \
 +    float *synth_buf= synth_buf_ptr + *synth_buf_offset;                       \
 +                                                                               \
 +    imdct->imdct_half(imdct, synth_buf, in);                                   \
 +                                                                               \
 +    ff_synth_filter_inner_##opt(synth_buf, synth_buf2, window,                 \
 +                                out, *synth_buf_offset, scale);                \
 +                                                                               \
 +    *synth_buf_offset = (*synth_buf_offset - 32) & 511;                        \
 +}                                                                              \
  
 -    *synth_buf_offset = (*synth_buf_offset - 32) & 511;
 -}
 +#if HAVE_YASM
 +#if ARCH_X86_32
 +SYNTH_FILTER_FUNC(sse)
 +#endif
 +SYNTH_FILTER_FUNC(sse2)
 +SYNTH_FILTER_FUNC(avx)
 +SYNTH_FILTER_FUNC(fma3)
- #endif
+ #endif /* HAVE_YASM */
  
  av_cold void ff_synth_filter_init_x86(SynthFilterContext *s)
  {
      if (EXTERNAL_SSE2(cpu_flags)) {
          s->synth_filter_float = synth_filter_sse2;
      }
- #endif
 +    if (EXTERNAL_AVX(cpu_flags)) {
 +        s->synth_filter_float = synth_filter_avx;
 +    }
 +    if (EXTERNAL_FMA3(cpu_flags)) {
 +        s->synth_filter_float = synth_filter_fma3;
 +    }
+ #endif /* HAVE_YASM */
  }