21 |
; * along with this program ; if not, write to the Free Software |
; * along with this program ; if not, write to the Free Software |
22 |
; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
23 |
; * |
; * |
24 |
; * $Id: mem_transfer_mmx.asm,v 1.9.2.1 2003-10-28 22:23:03 edgomez Exp $ |
; * $Id: mem_transfer_mmx.asm,v 1.9.2.2 2003-11-09 20:47:14 edgomez Exp $ |
25 |
; * |
; * |
26 |
; ***************************************************************************/ |
; ***************************************************************************/ |
27 |
|
|
37 |
%endmacro |
%endmacro |
38 |
|
|
39 |
;============================================================================= |
;============================================================================= |
40 |
|
; Read only data |
41 |
|
;============================================================================= |
42 |
|
|
43 |
|
%ifdef FORMAT_COFF |
44 |
|
SECTION .rodata data |
45 |
|
%else |
46 |
|
SECTION .rodata data align=16 |
47 |
|
%endif |
48 |
|
|
49 |
|
ALIGN 16 |
50 |
|
mmx_one: |
51 |
|
dw 1, 1, 1, 1 |
52 |
|
|
53 |
|
;============================================================================= |
54 |
; Code |
; Code |
55 |
;============================================================================= |
;============================================================================= |
56 |
|
|
245 |
punpckhbw mm3, mm7 |
punpckhbw mm3, mm7 |
246 |
paddusw mm4, mm1 |
paddusw mm4, mm1 |
247 |
paddusw mm6, mm3 |
paddusw mm6, mm3 |
248 |
|
paddusw mm4, [mmx_one] |
249 |
|
paddusw mm6, [mmx_one] |
250 |
psrlw mm4, 1 |
psrlw mm4, 1 |
251 |
psrlw mm6, 1 |
psrlw mm6, 1 |
252 |
packuswb mm4, mm6 |
packuswb mm4, mm6 |
253 |
|
movq [eax], mm4 |
254 |
|
|
255 |
; mm5 <- (ref1+ref2+1) / 2 |
; mm5 <- (ref1+ref2+1) / 2 |
256 |
movq mm5, [ebx+edx] ; ref1 |
movq mm5, [ebx+edx] ; ref1 |
263 |
punpckhbw mm3, mm7 |
punpckhbw mm3, mm7 |
264 |
paddusw mm5, mm1 |
paddusw mm5, mm1 |
265 |
paddusw mm6, mm3 |
paddusw mm6, mm3 |
266 |
|
paddusw mm5, [mmx_one] |
267 |
|
paddusw mm6, [mmx_one] |
268 |
lea esi, [esi+2*edx] |
lea esi, [esi+2*edx] |
269 |
psrlw mm5, 1 |
psrlw mm5, 1 |
270 |
psrlw mm6, 1 |
psrlw mm6, 1 |
271 |
packuswb mm5, mm6 |
packuswb mm5, mm6 |
272 |
|
movq [eax+edx], mm5 |
273 |
|
|
274 |
movq mm1, mm0 |
movq mm1, mm0 |
275 |
movq mm3, mm2 |
movq mm3, mm2 |
337 |
punpcklbw mm2, mm7 |
punpcklbw mm2, mm7 |
338 |
movq mm4, [ebx] ; ref1 |
movq mm4, [ebx] ; ref1 |
339 |
pavgb mm4, [esi] ; ref2 |
pavgb mm4, [esi] ; ref2 |
340 |
|
movq [eax], mm4 |
341 |
punpckhbw mm1, mm7 |
punpckhbw mm1, mm7 |
342 |
punpckhbw mm3, mm7 |
punpckhbw mm3, mm7 |
343 |
movq mm5, [ebx+edx] ; ref |
movq mm5, [ebx+edx] ; ref |
344 |
pavgb mm5, [esi+edx] ; ref2 |
pavgb mm5, [esi+edx] ; ref2 |
345 |
|
movq [eax+edx], mm5 |
346 |
|
|
347 |
movq mm6, mm4 |
movq mm6, mm4 |
348 |
punpcklbw mm4, mm7 |
punpcklbw mm4, mm7 |