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
180 %macro BIWEIGHT_STEPA 3
190 %macro BIWEIGHT_STEPB 0
199 cglobal h264_biweight_16, 7, 8, 0
203 BIWEIGHT_STEPA 0, 1, 0
204 BIWEIGHT_STEPA 1, 2, 4
207 BIWEIGHT_STEPA 0, 1, 8
208 BIWEIGHT_STEPA 1, 2, 12
217 %macro BIWEIGHT_FUNC_MM 2
218 cglobal h264_biweight_%1, 7, 8, %2
222 BIWEIGHT_STEPA 0, 1, 0
223 BIWEIGHT_STEPA 1, 2, mmsize/2
234 BIWEIGHT_FUNC_MM 8, 0
236 BIWEIGHT_FUNC_MM 16, 8
238 %macro BIWEIGHT_FUNC_HALF_MM 2
239 cglobal h264_biweight_%1, 7, 8, %2
245 BIWEIGHT_STEPA 0, 1, 0
246 BIWEIGHT_STEPA 1, 2, r2
263 BIWEIGHT_FUNC_HALF_MM 4, 0
265 BIWEIGHT_FUNC_HALF_MM 8, 8
267 %macro BIWEIGHT_SSSE3_OP 0
278 cglobal h264_biweight_16, 7, 8, 8
297 cglobal h264_biweight_8, 7, 8, 8