29 |
|
|
30 |
%macro cglobal 1 |
%macro cglobal 1 |
31 |
%ifdef PREFIX |
%ifdef PREFIX |
32 |
|
%ifdef MARK_FUNCS |
33 |
|
global _%1:function |
34 |
|
%define %1 _%1:function |
35 |
|
%else |
36 |
global _%1 |
global _%1 |
37 |
%define %1 _%1 |
%define %1 _%1 |
38 |
|
%endif |
39 |
|
%else |
40 |
|
%ifdef MARK_FUNCS |
41 |
|
global %1:function |
42 |
%else |
%else |
43 |
global %1 |
global %1 |
44 |
%endif |
%endif |
45 |
|
%endif |
46 |
%endmacro |
%endmacro |
47 |
|
|
48 |
;============================================================================= |
;============================================================================= |
49 |
|
; Read only data |
50 |
|
;============================================================================= |
51 |
|
|
52 |
|
%ifdef FORMAT_COFF |
53 |
|
SECTION .rodata |
54 |
|
%else |
55 |
|
SECTION .rodata align=16 |
56 |
|
%endif |
57 |
|
|
58 |
|
ALIGN 16 |
59 |
|
mmx_one: |
60 |
|
dw 1, 1, 1, 1 |
61 |
|
|
62 |
|
;============================================================================= |
63 |
; Code |
; Code |
64 |
;============================================================================= |
;============================================================================= |
65 |
|
|
254 |
punpckhbw mm3, mm7 |
punpckhbw mm3, mm7 |
255 |
paddusw mm4, mm1 |
paddusw mm4, mm1 |
256 |
paddusw mm6, mm3 |
paddusw mm6, mm3 |
257 |
|
paddusw mm4, [mmx_one] |
258 |
|
paddusw mm6, [mmx_one] |
259 |
psrlw mm4, 1 |
psrlw mm4, 1 |
260 |
psrlw mm6, 1 |
psrlw mm6, 1 |
261 |
packuswb mm4, mm6 |
packuswb mm4, mm6 |
262 |
|
movq [eax], mm4 |
263 |
|
|
264 |
; mm5 <- (ref1+ref2+1) / 2 |
; mm5 <- (ref1+ref2+1) / 2 |
265 |
movq mm5, [ebx+edx] ; ref1 |
movq mm5, [ebx+edx] ; ref1 |
272 |
punpckhbw mm3, mm7 |
punpckhbw mm3, mm7 |
273 |
paddusw mm5, mm1 |
paddusw mm5, mm1 |
274 |
paddusw mm6, mm3 |
paddusw mm6, mm3 |
275 |
|
paddusw mm5, [mmx_one] |
276 |
|
paddusw mm6, [mmx_one] |
277 |
lea esi, [esi+2*edx] |
lea esi, [esi+2*edx] |
278 |
psrlw mm5, 1 |
psrlw mm5, 1 |
279 |
psrlw mm6, 1 |
psrlw mm6, 1 |
280 |
packuswb mm5, mm6 |
packuswb mm5, mm6 |
281 |
|
movq [eax+edx], mm5 |
282 |
|
|
283 |
movq mm1, mm0 |
movq mm1, mm0 |
284 |
movq mm3, mm2 |
movq mm3, mm2 |
346 |
punpcklbw mm2, mm7 |
punpcklbw mm2, mm7 |
347 |
movq mm4, [ebx] ; ref1 |
movq mm4, [ebx] ; ref1 |
348 |
pavgb mm4, [esi] ; ref2 |
pavgb mm4, [esi] ; ref2 |
349 |
|
movq [eax], mm4 |
350 |
punpckhbw mm1, mm7 |
punpckhbw mm1, mm7 |
351 |
punpckhbw mm3, mm7 |
punpckhbw mm3, mm7 |
352 |
movq mm5, [ebx+edx] ; ref |
movq mm5, [ebx+edx] ; ref |
353 |
pavgb mm5, [esi+edx] ; ref2 |
pavgb mm5, [esi+edx] ; ref2 |
354 |
|
movq [eax+edx], mm5 |
355 |
|
|
356 |
movq mm6, mm4 |
movq mm6, mm4 |
357 |
punpcklbw mm4, mm7 |
punpcklbw mm4, mm7 |