1 ;******************************************************************************
2 ;* SIMD-optimized HuffYUV functions
3 ;* Copyright (c) 2008 Loren Merritt
4 ;* Copyright (c) 2014 Christophe Gisquet
6 ;* This file is part of FFmpeg.
8 ;* FFmpeg is free software; you can redistribute it and/or
9 ;* modify it under the terms of the GNU Lesser General Public
10 ;* License as published by the Free Software Foundation; either
11 ;* version 2.1 of the License, or (at your option) any later version.
13 ;* FFmpeg is distributed in the hope that it will be useful,
14 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 ;* Lesser General Public License for more details.
18 ;* You should have received a copy of the GNU Lesser General Public
19 ;* License along with FFmpeg; if not, write to the Free Software
20 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 ;******************************************************************************
23 %include "libavutil/x86/x86util.asm"
27 %include "libavcodec/x86/huffyuvdsp_template.asm"
29 ;------------------------------------------------------------------------------
30 ; void (*add_int16)(uint16_t *dst, const uint16_t *src, unsigned mask, int w);
31 ;------------------------------------------------------------------------------
34 cglobal add_int16, 4,4,5, dst, src, mask, w, tmp
56 %if HAVE_AVX2_EXTERNAL
61 ; void add_hfyu_left_pred_bgr32(uint8_t *dst, const uint8_t *src,
62 ; intptr_t w, uint8_t *left)
64 cglobal add_hfyu_left_pred_bgr32, 4,4,3, dst, src, w, left
101 ; void add_hfyu_median_prediction_mmxext(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int mask, int w, int *left, int *left_top)
103 cglobal add_hfyu_median_pred_int16, 7,7,0, dst, top, diff, mask, w, left, left_top
109 movd mm4, [left_topq]
114 psubw mm0, mm4 ; t-tl
126 psubw mm0, mm4 ; t-tl
132 paddw mm4, mm3 ; t-tl+l
138 pmaxsw mm3, mm5 ; median
139 paddw mm3, mm2 ; +residual
160 movzx r2d, word [dstq-2]
162 movzx r2d, word [topq-2]