]> git.sesse.net Git - ffmpeg/blob - libavcodec/x86/h264_idct_sse2.asm
Remove svn:executable property from source file.
[ffmpeg] / libavcodec / x86 / h264_idct_sse2.asm
1 ;*****************************************************************************\r
2 ;* dct-a.asm: h264 encoder library\r
3 ;*****************************************************************************\r
4 ;* Copyright (C) 2003-2008 x264 project\r
5 ;*\r
6 ;* Authors: Laurent Aimar <fenrir@via.ecp.fr>\r
7 ;*          Loren Merritt <lorenm@u.washington.edu>\r
8 ;*          Holger Lubitz <hal@duncan.ol.sub.de>\r
9 ;*          Min Chen <chenm001.163.com>\r
10 ;*\r
11 ;* This program is free software; you can redistribute it and/or modify\r
12 ;* it under the terms of the GNU General Public License as published by\r
13 ;* the Free Software Foundation; either version 2 of the License, or\r
14 ;* (at your option) any later version.\r
15 ;*\r
16 ;* This program is distributed in the hope that it will be useful,\r
17 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
18 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
19 ;* GNU General Public License for more details.\r
20 ;*\r
21 ;* You should have received a copy of the GNU General Public License\r
22 ;* along with this program; if not, write to the Free Software\r
23 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.\r
24 ;*****************************************************************************\r
25 \r
26 %include "x86inc.asm"\r
27 %include "x86util.asm"\r
28 \r
29 SECTION_RODATA\r
30 pw_32: times 8 dw 32\r
31 \r
32 SECTION .text\r
33 \r
34 %macro IDCT4_1D 6\r
35     SUMSUB_BA   m%3, m%1\r
36     SUMSUBD2_AB m%2, m%4, m%6, m%5\r
37     SUMSUB_BADC m%2, m%3, m%5, m%1\r
38     SWAP %1, %2, %5, %4, %3\r
39 %endmacro\r
40 \r
41 INIT_XMM\r
42 cglobal x264_add8x4_idct_sse2, 3,3\r
43     movq   m0, [r1+ 0]\r
44     movq   m1, [r1+ 8]\r
45     movq   m2, [r1+16]\r
46     movq   m3, [r1+24]\r
47     movhps m0, [r1+32]\r
48     movhps m1, [r1+40]\r
49     movhps m2, [r1+48]\r
50     movhps m3, [r1+56]\r
51     IDCT4_1D 0,1,2,3,4,5\r
52     TRANSPOSE2x4x4W 0,1,2,3,4\r
53     paddw m0, [pw_32 GLOBAL]\r
54     IDCT4_1D 0,1,2,3,4,5\r
55     pxor  m7, m7\r
56     STORE_DIFF  m0, m4, m7, [r0]\r
57     STORE_DIFF  m1, m4, m7, [r0+r2]\r
58     lea   r0, [r0+r2*2]\r
59     STORE_DIFF  m2, m4, m7, [r0]\r
60     STORE_DIFF  m3, m4, m7, [r0+r2]\r
61     RET\r