66 |
|
|
67 |
ALIGN SECTION_ALIGN |
ALIGN SECTION_ALIGN |
68 |
image_brightness_sse2: |
image_brightness_sse2: |
69 |
|
PUSH_XMM6_XMM7 |
70 |
mov eax, prm5d ; brightness offset value |
%ifdef ARCH_IS_X86_64 |
71 |
|
movsx _EAX, prm5d |
72 |
|
%else |
73 |
|
mov eax, prm5 ; brightness offset value |
74 |
|
%endif |
75 |
mov TMP1, prm1 ; Dst |
mov TMP1, prm1 ; Dst |
76 |
mov TMP0, prm2 ; stride |
mov TMP0, prm2 ; stride |
77 |
|
|
82 |
movdqa xmm6, [xmm_0x80] |
movdqa xmm6, [xmm_0x80] |
83 |
|
|
84 |
; Create a offset...offset vector |
; Create a offset...offset vector |
85 |
mov TMP1, _ESP ; TMP1 will be esp aligned mod 16 |
mov _ESI, _ESP ; TMP1 will be esp aligned mod 16 |
86 |
add TMP1, 15 ; TMP1 = esp + 15 |
add _ESI, 15 ; TMP1 = esp + 15 |
87 |
and TMP1, ~15 ; TMP1 = (esp + 15)&(~15) |
and _ESI, ~15 ; TMP1 = (esp + 15)&(~15) |
88 |
CREATE_OFFSET_VECTOR TMP1, al |
CREATE_OFFSET_VECTOR _ESI, al |
89 |
movdqa xmm7, [TMP1] |
movdqa xmm7, [_ESI] |
90 |
|
|
91 |
%ifdef ARCH_IS_X86_64 |
%ifdef ARCH_IS_X86_64 |
92 |
mov _ESI, prm3 |
mov _ESI, prm3 |
118 |
jl .xloop |
jl .xloop |
119 |
|
|
120 |
add TMP1, TMP0 ; dst += stride |
add TMP1, TMP0 ; dst += stride |
121 |
sub _EDI, 1 |
dec _EDI |
122 |
jg .yloop |
jg .yloop |
123 |
|
|
124 |
add _ESP, 32 |
add _ESP, 32 |
125 |
pop _EDI |
pop _EDI |
126 |
pop _ESI |
pop _ESI |
127 |
|
|
128 |
|
POP_XMM6_XMM7 |
129 |
ret |
ret |
130 |
ENDFUNC |
ENDFUNC |
131 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |