summaryrefslogtreecommitdiff
path: root/vp9/common/x86/vp9_x86_systemdependent.c
diff options
context:
space:
mode:
Diffstat (limited to 'vp9/common/x86/vp9_x86_systemdependent.c')
-rw-r--r--vp9/common/x86/vp9_x86_systemdependent.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/vp9/common/x86/vp9_x86_systemdependent.c b/vp9/common/x86/vp9_x86_systemdependent.c
new file mode 100644
index 000000000..8a9f04c9a
--- /dev/null
+++ b/vp9/common/x86/vp9_x86_systemdependent.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "vpx_config.h"
+#include "vpx_ports/x86.h"
+#include "vp9/common/vp9_loopfilter.h"
+#include "vp9/common/vp9_pragmas.h"
+#include "vp9/common/vp9_onyxc_int.h"
+
+void vp9_arch_x86_common_init(VP9_COMMON *ctx) {
+#if CONFIG_RUNTIME_CPU_DETECT
+ VP9_COMMON_RTCD *rtcd = &ctx->rtcd;
+ int flags = x86_simd_caps();
+
+ /* Note:
+ *
+ * This platform can be built without runtime CPU detection as well. If
+ * you modify any of the function mappings present in this file, be sure
+ * to also update them in static mapings (<arch>/filename_<arch>.h)
+ */
+
+ /* Override default functions with fastest ones for this CPU. */
+#if HAVE_MMX
+// The commented functions need to be re-written for vpx.
+ if (flags & HAS_MMX) {
+
+#if CONFIG_POSTPROC
+ rtcd->postproc.down = vp9_mbpost_proc_down_mmx;
+ /*rtcd->postproc.across = vp9_mbpost_proc_across_ip_c;*/
+ rtcd->postproc.downacross = vp9_post_proc_down_and_across_mmx;
+ rtcd->postproc.addnoise = vp9_plane_add_noise_mmx;
+#endif
+ }
+
+#endif
+#if HAVE_SSE2
+
+ if (flags & HAS_SSE2) {
+
+
+ // rtcd->idct.iwalsh16 = vp9_short_inv_walsh4x4_sse2;
+
+#if CONFIG_POSTPROC
+ rtcd->postproc.down = vp9_mbpost_proc_down_xmm;
+ rtcd->postproc.across = vp9_mbpost_proc_across_ip_xmm;
+ rtcd->postproc.downacross = vp9_post_proc_down_and_across_xmm;
+ rtcd->postproc.addnoise = vp9_plane_add_noise_wmt;
+#endif
+ }
+
+#endif
+
+#if HAVE_SSSE3
+
+ if (flags & HAS_SSSE3) {
+
+ /* these are disable because of unsupported diagonal pred modes
+ rtcd->recon.build_intra_predictors_mbuv =
+ vp9_build_intra_predictors_mbuv_ssse3;
+ rtcd->recon.build_intra_predictors_mbuv_s =
+ vp9_build_intra_predictors_mbuv_s_ssse3;
+ */
+ }
+#endif
+
+#endif
+}