annotate x86/h264_idct_sse2.asm @ 9868:5cc32c474caf libavcodec

Introduce WMACoef typedef for decoded coefficients and change default type to float so that the run level decoding functionality can be shared with wmapro
author faust3
date Sat, 20 Jun 2009 09:05:28 +0000
parents 37ac731fe32c
children c08ca946c80a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9006
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
1 ;*****************************************************************************
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
2 ;* SSE2-optimized H.264 iDCT
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
3 ;*****************************************************************************
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
4 ;* Copyright (C) 2003-2008 x264 project
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
5 ;*
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
6 ;* Authors: Laurent Aimar <fenrir@via.ecp.fr>
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
7 ;* Loren Merritt <lorenm@u.washington.edu>
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
8 ;* Holger Lubitz <hal@duncan.ol.sub.de>
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
9 ;* Min Chen <chenm001.163.com>
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
10 ;*
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
11 ;* This program is free software; you can redistribute it and/or modify
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
12 ;* it under the terms of the GNU General Public License as published by
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
13 ;* the Free Software Foundation; either version 2 of the License, or
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
14 ;* (at your option) any later version.
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
15 ;*
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
16 ;* This program is distributed in the hope that it will be useful,
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
17 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
18 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
19 ;* GNU General Public License for more details.
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
20 ;*
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
21 ;* You should have received a copy of the GNU General Public License
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
22 ;* along with this program; if not, write to the Free Software
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
23 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
24 ;*****************************************************************************
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
25
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
26 %include "x86inc.asm"
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
27 %include "x86util.asm"
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
28
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
29 SECTION_RODATA
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
30 pw_32: times 8 dw 32
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
31
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
32 SECTION .text
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
33
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
34 %macro IDCT4_1D 6
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
35 SUMSUB_BA m%3, m%1
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
36 SUMSUBD2_AB m%2, m%4, m%6, m%5
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
37 SUMSUB_BADC m%2, m%3, m%5, m%1
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
38 SWAP %1, %2, %5, %4, %3
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
39 %endmacro
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
40
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
41 INIT_XMM
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
42 cglobal x264_add8x4_idct_sse2, 3,3
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
43 movq m0, [r1+ 0]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
44 movq m1, [r1+ 8]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
45 movq m2, [r1+16]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
46 movq m3, [r1+24]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
47 movhps m0, [r1+32]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
48 movhps m1, [r1+40]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
49 movhps m2, [r1+48]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
50 movhps m3, [r1+56]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
51 IDCT4_1D 0,1,2,3,4,5
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
52 TRANSPOSE2x4x4W 0,1,2,3,4
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
53 paddw m0, [pw_32 GLOBAL]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
54 IDCT4_1D 0,1,2,3,4,5
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
55 pxor m7, m7
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
56 STORE_DIFF m0, m4, m7, [r0]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
57 STORE_DIFF m1, m4, m7, [r0+r2]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
58 lea r0, [r0+r2*2]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
59 STORE_DIFF m2, m4, m7, [r0]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
60 STORE_DIFF m3, m4, m7, [r0+r2]
37ac731fe32c Convert x264 asm files to proper unix line breaks
darkshikari
parents: 9005
diff changeset
61 RET