1 ;*****************************************************************************
2 ;* SSE2-optimized weighted prediction code
3 ;*****************************************************************************
4 ;* Copyright (c) 2004-2005 Michael Niedermayer, Loren Merritt
5 ;* Copyright (C) 2010 Eli Friedman <eli.friedman@gmail.com>
7 ;* This file is part of FFmpeg.
9 ;* FFmpeg is free software; you can redistribute it and/or
10 ;* modify it under the terms of the GNU Lesser General Public
11 ;* License as published by the Free Software Foundation; either
12 ;* version 2.1 of the License, or (at your option) any later version.
14 ;* FFmpeg is distributed in the hope that it will be useful,
15 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 ;* Lesser General Public License for more details.
19 ;* You should have received a copy of the GNU Lesser General Public
20 ;* License along with FFmpeg; if not, write to the Free Software
21 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 ;******************************************************************************
24 %include "libavutil/x86/x86util.asm"
28 ;-----------------------------------------------------------------------------
31 ; void ff_h264_biweight_16_sse2(uint8_t *dst, uint8_t *src, int stride,
32 ; int height, int log2_denom, int weightd,
33 ; int weights, int offset);
35 ; void ff_h264_weight_16_sse2(uint8_t *dst, int stride, int height,
36 ; int log2_denom, int weight, int offset);
37 ;-----------------------------------------------------------------------------
74 cglobal h264_weight_16, 6, 6, 0
86 %macro WEIGHT_FUNC_MM 2
87 cglobal h264_weight_%1, 6, 6, %2
103 %macro WEIGHT_FUNC_HALF_MM 2
104 cglobal h264_weight_%1, 6, 6, %2
124 WEIGHT_FUNC_HALF_MM 4, 0
126 WEIGHT_FUNC_HALF_MM 8, 8
128 %macro BIWEIGHT_SETUP 0
183 %macro BIWEIGHT_STEPA 3
193 %macro BIWEIGHT_STEPB 0
202 cglobal h264_biweight_16, 7, 8, 0
206 BIWEIGHT_STEPA 0, 1, 0
207 BIWEIGHT_STEPA 1, 2, 4
210 BIWEIGHT_STEPA 0, 1, 8
211 BIWEIGHT_STEPA 1, 2, 12
220 %macro BIWEIGHT_FUNC_MM 2
221 cglobal h264_biweight_%1, 7, 8, %2
225 BIWEIGHT_STEPA 0, 1, 0
226 BIWEIGHT_STEPA 1, 2, mmsize/2
237 BIWEIGHT_FUNC_MM 8, 0
239 BIWEIGHT_FUNC_MM 16, 8
241 %macro BIWEIGHT_FUNC_HALF_MM 2
242 cglobal h264_biweight_%1, 7, 8, %2
248 BIWEIGHT_STEPA 0, 1, 0
249 BIWEIGHT_STEPA 1, 2, r2
266 BIWEIGHT_FUNC_HALF_MM 4, 0
268 BIWEIGHT_FUNC_HALF_MM 8, 8
270 %macro BIWEIGHT_SSSE3_OP 0
281 cglobal h264_biweight_16, 7, 8, 8
300 cglobal h264_biweight_8, 7, 8, 8