Merge "keep values in registers during quantization"
[libvpx.git] / vp8 / common / x86 / subpixel_x86.h
blob75991cc4f143369802b9afcfa1035af5eab7d0a4
1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
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 */
12 #ifndef SUBPIXEL_X86_H
13 #define SUBPIXEL_X86_H
15 /* Note:
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
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);
33 #if !CONFIG_RUNTIME_CPU_DETECT
34 #undef vp8_subpix_sixtap16x16
35 #define vp8_subpix_sixtap16x16 vp8_sixtap_predict16x16_mmx
37 #undef vp8_subpix_sixtap8x8
38 #define vp8_subpix_sixtap8x8 vp8_sixtap_predict8x8_mmx
40 #undef vp8_subpix_sixtap8x4
41 #define vp8_subpix_sixtap8x4 vp8_sixtap_predict8x4_mmx
43 #undef vp8_subpix_sixtap4x4
44 #define vp8_subpix_sixtap4x4 vp8_sixtap_predict4x4_mmx
46 #undef vp8_subpix_bilinear16x16
47 #define vp8_subpix_bilinear16x16 vp8_bilinear_predict16x16_mmx
49 #undef vp8_subpix_bilinear8x8
50 #define vp8_subpix_bilinear8x8 vp8_bilinear_predict8x8_mmx
52 #undef vp8_subpix_bilinear8x4
53 #define vp8_subpix_bilinear8x4 vp8_bilinear_predict8x4_mmx
55 #undef vp8_subpix_bilinear4x4
56 #define vp8_subpix_bilinear4x4 vp8_bilinear_predict4x4_mmx
58 #endif
59 #endif
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);
70 #if !CONFIG_RUNTIME_CPU_DETECT
71 #undef vp8_subpix_sixtap16x16
72 #define vp8_subpix_sixtap16x16 vp8_sixtap_predict16x16_sse2
74 #undef vp8_subpix_sixtap8x8
75 #define vp8_subpix_sixtap8x8 vp8_sixtap_predict8x8_sse2
77 #undef vp8_subpix_sixtap8x4
78 #define vp8_subpix_sixtap8x4 vp8_sixtap_predict8x4_sse2
80 #undef vp8_subpix_bilinear16x16
81 #define vp8_subpix_bilinear16x16 vp8_bilinear_predict16x16_sse2
83 #undef vp8_subpix_bilinear8x8
84 #define vp8_subpix_bilinear8x8 vp8_bilinear_predict8x8_sse2
86 #endif
87 #endif
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);
97 #if !CONFIG_RUNTIME_CPU_DETECT
98 #undef vp8_subpix_sixtap16x16
99 #define vp8_subpix_sixtap16x16 vp8_sixtap_predict16x16_ssse3
101 #undef vp8_subpix_sixtap8x8
102 #define vp8_subpix_sixtap8x8 vp8_sixtap_predict8x8_ssse3
104 #undef vp8_subpix_sixtap8x4
105 #define vp8_subpix_sixtap8x4 vp8_sixtap_predict8x4_ssse3
107 #undef vp8_subpix_sixtap4x4
108 #define vp8_subpix_sixtap4x4 vp8_sixtap_predict4x4_ssse3
111 #undef vp8_subpix_bilinear16x16
112 #define vp8_subpix_bilinear16x16 vp8_bilinear_predict16x16_ssse3
114 #undef vp8_subpix_bilinear8x8
115 #define vp8_subpix_bilinear8x8 vp8_bilinear_predict8x8_ssse3
117 #endif
118 #endif
122 #endif