Revision e6e98234 libavcodec/x86/dsputil_mmx.c

View differences:

libavcodec/x86/dsputil_mmx.c
2388 2388
int32_t ff_scalarproduct_and_madd_int16_mmx2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
2389 2389
int32_t ff_scalarproduct_and_madd_int16_sse2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
2390 2390
int32_t ff_scalarproduct_and_madd_int16_ssse3(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
2391

  
2392
void ff_apply_window_int16_mmxext    (int16_t *output, const int16_t *input,
2393
                                      const int16_t *window, unsigned int len);
2394
void ff_apply_window_int16_mmxext_ba (int16_t *output, const int16_t *input,
2395
                                      const int16_t *window, unsigned int len);
2396
void ff_apply_window_int16_sse2      (int16_t *output, const int16_t *input,
2397
                                      const int16_t *window, unsigned int len);
2398
void ff_apply_window_int16_sse2_ba   (int16_t *output, const int16_t *input,
2399
                                      const int16_t *window, unsigned int len);
2400
void ff_apply_window_int16_ssse3     (int16_t *output, const int16_t *input,
2401
                                      const int16_t *window, unsigned int len);
2402
void ff_apply_window_int16_ssse3_atom(int16_t *output, const int16_t *input,
2403
                                      const int16_t *window, unsigned int len);
2404

  
2391 2405
void ff_add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top);
2392 2406
int  ff_add_hfyu_left_prediction_ssse3(uint8_t *dst, const uint8_t *src, int w, int left);
2393 2407
int  ff_add_hfyu_left_prediction_sse4(uint8_t *dst, const uint8_t *src, int w, int left);
......
2749 2763
#if HAVE_YASM
2750 2764
            c->scalarproduct_int16 = ff_scalarproduct_int16_mmx2;
2751 2765
            c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_mmx2;
2766
            if (avctx->flags & CODEC_FLAG_BITEXACT) {
2767
                c->apply_window_int16 = ff_apply_window_int16_mmxext_ba;
2768
            } else {
2769
                c->apply_window_int16 = ff_apply_window_int16_mmxext;
2770
            }
2752 2771
#endif
2753 2772
        }
2754 2773
        if(mm_flags & AV_CPU_FLAG_SSE){
......
2771 2790
#if HAVE_YASM
2772 2791
            c->scalarproduct_int16 = ff_scalarproduct_int16_sse2;
2773 2792
            c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_sse2;
2793
            if (avctx->flags & CODEC_FLAG_BITEXACT) {
2794
                c->apply_window_int16 = ff_apply_window_int16_sse2_ba;
2795
            } else {
2796
                if (!(mm_flags & AV_CPU_FLAG_SSE2SLOW)) {
2797
                    c->apply_window_int16 = ff_apply_window_int16_sse2;
2798
                }
2799
            }
2774 2800

  
2775 2801
            c->emulated_edge_mc = emulated_edge_mc_sse;
2776 2802
            c->gmc= gmc_sse;
2777 2803
#endif
2778 2804
        }
2779
        if((mm_flags & AV_CPU_FLAG_SSSE3) && !(mm_flags & (AV_CPU_FLAG_SSE42|AV_CPU_FLAG_3DNOW)) && HAVE_YASM) // cachesplit
2780
            c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_ssse3;
2805
        if (mm_flags & AV_CPU_FLAG_SSSE3) {
2806
#if HAVE_YASM
2807
            if (mm_flags & AV_CPU_FLAG_ATOM) {
2808
                c->apply_window_int16 = ff_apply_window_int16_ssse3_atom;
2809
            } else {
2810
                c->apply_window_int16 = ff_apply_window_int16_ssse3;
2811
            }
2812
            if (!(mm_flags & (AV_CPU_FLAG_SSE42|AV_CPU_FLAG_3DNOW))) { // cachesplit
2813
                c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_ssse3;
2814
            }
2815
#endif
2816
        }
2781 2817
    }
2782 2818

  
2783 2819
    if (CONFIG_ENCODERS)

Also available in: Unified diff