summaryrefslogtreecommitdiff
path: root/libavcodec/x86
diff options
context:
space:
mode:
authorMartin Vignali <martin.vignali@gmail.com>2017-11-06 21:51:54 +0100
committerMartin Vignali <martin.vignali@gmail.com>2017-11-07 00:56:02 +0100
commitda62128ea1429daae6c680838d6726e9cfd10972 (patch)
tree47c3752d5257206d589171c5e87cb1edb655ab2e /libavcodec/x86
parentfbe91487797c91dc9e4b79628a448e2451ef28a6 (diff)
libavcodec/lossless_videodsp : add add_bytes avx2 version
Diffstat (limited to 'libavcodec/x86')
-rw-r--r--libavcodec/x86/lossless_videodsp.asm5
-rw-r--r--libavcodec/x86/lossless_videodsp_init.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/libavcodec/x86/lossless_videodsp.asm b/libavcodec/x86/lossless_videodsp.asm
index 443fe02951..70ed555737 100644
--- a/libavcodec/x86/lossless_videodsp.asm
+++ b/libavcodec/x86/lossless_videodsp.asm
@@ -217,6 +217,11 @@ ADD_BYTES
INIT_XMM sse2
ADD_BYTES
+%if HAVE_AVX2_EXTERNAL
+INIT_YMM avx2
+ADD_BYTES
+%endif
+
%macro ADD_HFYU_LEFT_LOOP_INT16 2 ; %1 = dst alignment (a/u), %2 = src alignment (a/u)
add wd, wd
add srcq, wq
diff --git a/libavcodec/x86/lossless_videodsp_init.c b/libavcodec/x86/lossless_videodsp_init.c
index 21bbd12bd2..4f20c1ce92 100644
--- a/libavcodec/x86/lossless_videodsp_init.c
+++ b/libavcodec/x86/lossless_videodsp_init.c
@@ -25,6 +25,7 @@
void ff_add_bytes_mmx(uint8_t *dst, uint8_t *src, ptrdiff_t w);
void ff_add_bytes_sse2(uint8_t *dst, uint8_t *src, ptrdiff_t w);
+void ff_add_bytes_avx2(uint8_t *dst, uint8_t *src, ptrdiff_t w);
void ff_add_median_pred_mmxext(uint8_t *dst, const uint8_t *top,
const uint8_t *diff, ptrdiff_t w,
@@ -115,4 +116,7 @@ void ff_llviddsp_init_x86(LLVidDSPContext *c)
if (EXTERNAL_SSE4(cpu_flags)) {
c->add_left_pred_int16 = ff_add_left_pred_int16_sse4;
}
+ if (EXTERNAL_AVX2_FAST(cpu_flags)) {
+ c->add_bytes = ff_add_bytes_avx2;
+ }
}