Home | History | Annotate | Download | only in x86
      1 /*
      2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 
     12 #ifndef SUBPIXEL_X86_H
     13 #define SUBPIXEL_X86_H
     14 
     15 /* Note:
     16  *
     17  * This platform is commonly built for runtime CPU detection. If you modify
     18  * any of the function mappings present in this file, be sure to also update
     19  * them in the function pointer initialization code
     20  */
     21 
     22 #if HAVE_MMX
     23 extern prototype_subpixel_predict(vp8_sixtap_predict16x16_mmx);
     24 extern prototype_subpixel_predict(vp8_sixtap_predict8x8_mmx);
     25 extern prototype_subpixel_predict(vp8_sixtap_predict8x4_mmx);
     26 extern prototype_subpixel_predict(vp8_sixtap_predict4x4_mmx);
     27 extern prototype_subpixel_predict(vp8_bilinear_predict16x16_mmx);
     28 extern prototype_subpixel_predict(vp8_bilinear_predict8x8_mmx);
     29 extern prototype_subpixel_predict(vp8_bilinear_predict8x4_mmx);
     30 extern prototype_subpixel_predict(vp8_bilinear_predict4x4_mmx);
     31 
     32 
     33 #if !CONFIG_RUNTIME_CPU_DETECT
     34 #undef  vp8_subpix_sixtap16x16
     35 #define vp8_subpix_sixtap16x16 vp8_sixtap_predict16x16_mmx
     36 
     37 #undef  vp8_subpix_sixtap8x8
     38 #define vp8_subpix_sixtap8x8 vp8_sixtap_predict8x8_mmx
     39 
     40 #undef  vp8_subpix_sixtap8x4
     41 #define vp8_subpix_sixtap8x4 vp8_sixtap_predict8x4_mmx
     42 
     43 #undef  vp8_subpix_sixtap4x4
     44 #define vp8_subpix_sixtap4x4 vp8_sixtap_predict4x4_mmx
     45 
     46 #undef  vp8_subpix_bilinear16x16
     47 #define vp8_subpix_bilinear16x16 vp8_bilinear_predict16x16_mmx
     48 
     49 #undef  vp8_subpix_bilinear8x8
     50 #define vp8_subpix_bilinear8x8 vp8_bilinear_predict8x8_mmx
     51 
     52 #undef  vp8_subpix_bilinear8x4
     53 #define vp8_subpix_bilinear8x4 vp8_bilinear_predict8x4_mmx
     54 
     55 #undef  vp8_subpix_bilinear4x4
     56 #define vp8_subpix_bilinear4x4 vp8_bilinear_predict4x4_mmx
     57 
     58 #endif
     59 #endif
     60 
     61 
     62 #if HAVE_SSE2
     63 extern prototype_subpixel_predict(vp8_sixtap_predict16x16_sse2);
     64 extern prototype_subpixel_predict(vp8_sixtap_predict8x8_sse2);
     65 extern prototype_subpixel_predict(vp8_sixtap_predict8x4_sse2);
     66 extern prototype_subpixel_predict(vp8_bilinear_predict16x16_sse2);
     67 extern prototype_subpixel_predict(vp8_bilinear_predict8x8_sse2);
     68 
     69 
     70 #if !CONFIG_RUNTIME_CPU_DETECT
     71 #undef  vp8_subpix_sixtap16x16
     72 #define vp8_subpix_sixtap16x16 vp8_sixtap_predict16x16_sse2
     73 
     74 #undef  vp8_subpix_sixtap8x8
     75 #define vp8_subpix_sixtap8x8 vp8_sixtap_predict8x8_sse2
     76 
     77 #undef  vp8_subpix_sixtap8x4
     78 #define vp8_subpix_sixtap8x4 vp8_sixtap_predict8x4_sse2
     79 
     80 #undef  vp8_subpix_bilinear16x16
     81 #define vp8_subpix_bilinear16x16 vp8_bilinear_predict16x16_sse2
     82 
     83 #undef  vp8_subpix_bilinear8x8
     84 #define vp8_subpix_bilinear8x8 vp8_bilinear_predict8x8_sse2
     85 
     86 #endif
     87 #endif
     88 
     89 #if HAVE_SSSE3
     90 extern prototype_subpixel_predict(vp8_sixtap_predict16x16_ssse3);
     91 extern prototype_subpixel_predict(vp8_sixtap_predict8x8_ssse3);
     92 extern prototype_subpixel_predict(vp8_sixtap_predict8x4_ssse3);
     93 extern prototype_subpixel_predict(vp8_sixtap_predict4x4_ssse3);
     94 extern prototype_subpixel_predict(vp8_bilinear_predict16x16_ssse3);
     95 extern prototype_subpixel_predict(vp8_bilinear_predict8x8_ssse3);
     96 
     97 #if !CONFIG_RUNTIME_CPU_DETECT
     98 #undef  vp8_subpix_sixtap16x16
     99 #define vp8_subpix_sixtap16x16 vp8_sixtap_predict16x16_ssse3
    100 
    101 #undef  vp8_subpix_sixtap8x8
    102 #define vp8_subpix_sixtap8x8 vp8_sixtap_predict8x8_ssse3
    103 
    104 #undef  vp8_subpix_sixtap8x4
    105 #define vp8_subpix_sixtap8x4 vp8_sixtap_predict8x4_ssse3
    106 
    107 #undef  vp8_subpix_sixtap4x4
    108 #define vp8_subpix_sixtap4x4 vp8_sixtap_predict4x4_ssse3
    109 
    110 
    111 #undef  vp8_subpix_bilinear16x16
    112 #define vp8_subpix_bilinear16x16 vp8_bilinear_predict16x16_ssse3
    113 
    114 #undef  vp8_subpix_bilinear8x8
    115 #define vp8_subpix_bilinear8x8 vp8_bilinear_predict8x8_ssse3
    116 
    117 #endif
    118 #endif
    119 
    120 
    121 
    122 #endif
    123