summaryrefslogtreecommitdiff
path: root/libavcodec/ppc/videodsp.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2017-03-23 18:17:45 -0300
committerJames Almer <jamrial@gmail.com>2017-03-23 18:17:45 -0300
commit09a80419b73d804d7071194789976b7024ec888f (patch)
tree63c306a3c3fb6873157dd4c489ad6f96b3c0115d /libavcodec/ppc/videodsp.c
parent530066166e3c510c3d9c21ff2ae17400adac3dce (diff)
parent58224dc5f3d4fea40a8d55cca87291a960c11622 (diff)
Merge commit '58224dc5f3d4fea40a8d55cca87291a960c11622'
* commit '58224dc5f3d4fea40a8d55cca87291a960c11622': ppc: avcodec: Drop silly "_ppc" suffixes from files in ppc subdirectories Merged-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/ppc/videodsp.c')
-rw-r--r--libavcodec/ppc/videodsp.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/libavcodec/ppc/videodsp.c b/libavcodec/ppc/videodsp.c
new file mode 100644
index 0000000000..915702252e
--- /dev/null
+++ b/libavcodec/ppc/videodsp.c
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2003-2004 Romain Dolbeau
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libavutil/attributes.h"
+#include "libavcodec/videodsp.h"
+
+static void prefetch_ppc(uint8_t *mem, ptrdiff_t stride, int h)
+{
+ register const uint8_t *p = mem;
+ do {
+ __asm__ volatile ("dcbt 0,%0" : : "r" (p));
+ p += stride;
+ } while(--h);
+}
+
+av_cold void ff_videodsp_init_ppc(VideoDSPContext *ctx, int bpc)
+{
+ ctx->prefetch = prefetch_ppc;
+}