x86: simple_idct(_put): 10bits versions
[ffmpeg.git] / libavcodec / x86 / simple_idct10.asm
1 ;******************************************************************************
2 ;* x86-SIMD-optimized IDCT for prores
3 ;* this is identical to "simple" IDCT written by Michael Niedermayer
4 ;* except for the clip range
5 ;*
6 ;* Copyright (c) 2011 Ronald S. Bultje <rsbultje@gmail.com>
7 ;* Copyright (c) 2015 Christophe Gisquet
8 ;*
9 ;* This file is part of FFmpeg.
10 ;*
11 ;* FFmpeg is free software; you can redistribute it and/or
12 ;* modify it under the terms of the GNU Lesser General Public
13 ;* License as published by the Free Software Foundation; either
14 ;* version 2.1 of the License, or (at your option) any later version.
15 ;*
16 ;* FFmpeg is distributed in the hope that it will be useful,
17 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19 ;* Lesser General Public License for more details.
20 ;*
21 ;* You should have received a copy of the GNU Lesser General Public
22 ;* License along with FFmpeg; if not, write to the Free Software
23 ;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 ;******************************************************************************
25
26 %include "libavutil/x86/x86util.asm"
27
28 %if ARCH_X86_64
29
30 SECTION_RODATA
31
32 cextern pw_16
33 cextern pw_1023
34 pd_round_12: times 4 dd 1<<(12-1)
35 pd_round_19: times 4 dd 1<<(19-1)
36
37 %include "libavcodec/x86/simple_idct10_template.asm"
38
39 section .text align=16
40
41 %macro idct_fn 0
42 cglobal simple_idct10, 1, 1, 16
43     IDCT_FN    "", 12, "", 19
44     RET
45
46 cglobal simple_idct10_put, 3, 3, 16
47     IDCT_FN    "", 12, "", 19, 0, pw_1023
48     RET
49 %endmacro
50
51 INIT_XMM sse2
52 idct_fn
53 %if HAVE_AVX_EXTERNAL
54 INIT_XMM avx
55 idct_fn
56 %endif
57
58 %endif