[svn] / trunk / xvidcore / src / utils / x86_asm / mem_transfer_mmx.asm Repository:
ViewVC logotype

Diff of /trunk/xvidcore/src/utils/x86_asm/mem_transfer_mmx.asm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 850, Sat Feb 15 08:39:17 2003 UTC revision 851, Sat Feb 15 15:22:19 2003 UTC
# Line 3  Line 3 
3  ; *     XVID MPEG-4 VIDEO CODEC  ; *     XVID MPEG-4 VIDEO CODEC
4  ; *     mmx 8bit<->16bit transfers  ; *     mmx 8bit<->16bit transfers
5  ; *  ; *
6  ; *  This file is part of XviD, a free MPEG-4 video encoder/decoder  ; *     This program is an implementation of a part of one or more MPEG-4
7    ; *     Video tools as specified in ISO/IEC 14496-2 standard.  Those intending
8    ; *     to use this software module in hardware or software products are
9    ; *     advised that its use may infringe existing patents or copyrights, and
10    ; *     any such use would be at such party's own risk.  The original
11    ; *     developer of this software module and his/her company, and subsequent
12    ; *     editors and their companies, will have no liability for use of this
13    ; *     software or modifications or derivatives thereof.
14  ; *  ; *
15  ; *  XviD is free software; you can redistribute it and/or modify it  ; *     This program is free software; you can redistribute it and/or modify
16  ; *  under the terms of the GNU General Public License as published by  ; *     it under the terms of the GNU General Public License as published by
17  ; *  the Free Software Foundation; either version 2 of the License, or  ; *  the Free Software Foundation; either version 2 of the License, or
18  ; *  (at your option) any later version.  ; *  (at your option) any later version.
19  ; *  ; *
# Line 17  Line 24 
24  ; *  ; *
25  ; *  You should have received a copy of the GNU General Public License  ; *  You should have received a copy of the GNU General Public License
26  ; *  along with this program; if not, write to the Free Software  ; *  along with this program; if not, write to the Free Software
27  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  ; *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 ; *  
 ; *  Under section 8 of the GNU General Public License, the copyright  
 ; *  holders of XVID explicitly forbid distribution in the following  
 ; *  countries:  
 ; *  
 ; *    - Japan  
 ; *    - United States of America  
 ; *  
 ; *  Linking XviD statically or dynamically with other modules is making a  
 ; *  combined work based on XviD.  Thus, the terms and conditions of the  
 ; *  GNU General Public License cover the whole combination.  
 ; *  
 ; *  As a special exception, the copyright holders of XviD give you  
 ; *  permission to link XviD with independent modules that communicate with  
 ; *  XviD solely through the VFW1.1 and DShow interfaces, regardless of the  
 ; *  license terms of these independent modules, and to copy and distribute  
 ; *  the resulting combined work under terms of your choice, provided that  
 ; *  every copy of the combined work is accompanied by a complete copy of  
 ; *  the source code of XviD (the version of XviD used to produce the  
 ; *  combined work), being distributed under the terms of the GNU General  
 ; *  Public License plus this exception.  An independent module is a module  
 ; *  which is not derived from or based on XviD.  
 ; *  
 ; *  Note that people who make modified versions of XviD are not obligated  
 ; *  to grant this special exception for their modified versions; it is  
 ; *  their choice whether to do so.  The GNU General Public License gives  
 ; *  permission to release a modified version without this exception; this  
 ; *  exception also makes it possible to release a modified version which  
 ; *  carries forward this exception.  
 ; *  
 ; * $Id: mem_transfer_mmx.asm,v 1.8 2002-11-17 00:51:11 edgomez Exp $  
28  ; *  ; *
29  ; *************************************************************************/  ; *************************************************************************/
30    
# Line 59  Line 35 
35  ; * 04.06.2002  speed enhancement (unroll+overlap). -Skal-  ; * 04.06.2002  speed enhancement (unroll+overlap). -Skal-
36  ; *             + added transfer_8to16sub2_mmx/xmm  ; *             + added transfer_8to16sub2_mmx/xmm
37  ; * 07.01.2002  merge functions from compensate_mmx; rename functions  ; * 07.01.2002  merge functions from compensate_mmx; rename functions
38  ; *     07.11.2001      initial version; (c)2001 peter ross <pross@xvid.org>  ; *     07.11.2001      initial version; (c)2001 peter ross <pross@cs.rmit.edu.au>
39  ; *  ; *
40  ; *************************************************************************/  ; *************************************************************************/
41    
# Line 81  Line 57 
57  cglobal transfer_8to16copy_mmx  cglobal transfer_8to16copy_mmx
58  cglobal transfer_16to8copy_mmx  cglobal transfer_16to8copy_mmx
59  cglobal transfer_8to16sub_mmx  cglobal transfer_8to16sub_mmx
60    cglobal transfer_8to16subro_mmx
61  cglobal transfer_8to16sub2_mmx  cglobal transfer_8to16sub2_mmx
62  cglobal transfer_8to16sub2_xmm  cglobal transfer_8to16sub2_xmm
63  cglobal transfer_16to8add_mmx  cglobal transfer_16to8add_mmx
# Line 175  Line 152 
152  ; * 02.12.2001  loop unrolled, code runs 10% faster now (Isibaar)  ; * 02.12.2001  loop unrolled, code runs 10% faster now (Isibaar)
153  ; * 30.11.2001  16 pixels are processed per iteration (Isibaar)  ; * 30.11.2001  16 pixels are processed per iteration (Isibaar)
154  ; * 30.11.2001  .text missing  ; * 30.11.2001  .text missing
155  ; *     06.11.2001      inital version; (c)2001 peter ross <pross@xvid.org>  ; *     06.11.2001      inital version; (c)2001 peter ross <pross@cs.rmit.edu.au>
156  ; *  ; *
157  ; *************************************************************************/  ; *************************************************************************/
158    
159  %macro COPY_8_TO_16_SUB 1  ; when second argument == 1, reference (ebx) block is to current (eax)
160    %macro COPY_8_TO_16_SUB 2
161    movq mm0, [eax]      ; cur    movq mm0, [eax]      ; cur
162    movq mm2, [eax+edx]    movq mm2, [eax+edx]
163    movq mm1, mm0    movq mm1, mm0
# Line 193  Line 171 
171    movq mm5, [ebx+edx]  ; ref    movq mm5, [ebx+edx]  ; ref
172    
173    movq mm6, mm4    movq mm6, mm4
174    %if %2 == 1
175    movq [eax], mm4    movq [eax], mm4
176    movq [eax+edx], mm5    movq [eax+edx], mm5
177    %endif
178    punpcklbw mm4, mm7    punpcklbw mm4, mm7
179    punpckhbw mm6, mm7    punpckhbw mm6, mm7
180    psubsw mm0, mm4    psubsw mm0, mm4
# Line 222  Line 202 
202    mov edx, [esp+4+16] ; Stride    mov edx, [esp+4+16] ; Stride
203    pxor mm7, mm7    pxor mm7, mm7
204    
205    COPY_8_TO_16_SUB 0    COPY_8_TO_16_SUB 0, 1
206    COPY_8_TO_16_SUB 1    COPY_8_TO_16_SUB 1, 1
207    COPY_8_TO_16_SUB 2    COPY_8_TO_16_SUB 2, 1
208    COPY_8_TO_16_SUB 3    COPY_8_TO_16_SUB 3, 1
209    
210    pop ebx    pop ebx
211    ret    ret
212    
213    
214    align 16
215    transfer_8to16subro_mmx:
216      mov ecx, [esp  + 4] ; Dst
217      mov eax, [esp  + 8] ; Cur
218      push ebx
219      mov ebx, [esp+4+12] ; Ref
220      mov edx, [esp+4+16] ; Stride
221      pxor mm7, mm7
222    
223      COPY_8_TO_16_SUB 0, 0
224      COPY_8_TO_16_SUB 1, 0
225      COPY_8_TO_16_SUB 2, 0
226      COPY_8_TO_16_SUB 3, 0
227    
228      pop ebx
229      ret
230    
231    
232  ;===========================================================================  ;===========================================================================
233  ;  ;
234  ; void transfer_8to16sub2_mmx(int16_t * const dct,  ; void transfer_8to16sub2_mmx(int16_t * const dct,

Legend:
Removed from v.850  
changed lines
  Added in v.851

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4