Lines 161-167
Link Here
|
161 |
" pxor %%mm7 , %%mm7; /* clear mm7 */\n" |
161 |
" pxor %%mm7 , %%mm7; /* clear mm7 */\n" |
162 |
" /* */\n" |
162 |
" /* */\n" |
163 |
" movl %1 , %%eax; /* load frameadress into eax */\n" |
163 |
" movl %1 , %%eax; /* load frameadress into eax */\n" |
164 |
" movl %2 , %%ebx; /* load frameadress into ebx */\n" |
164 |
" movl %2 , %%esi; /* load frameadress into esi */\n" |
165 |
" movl %3 , %%ecx; /* load frameadress into ecx */\n" |
165 |
" movl %3 , %%ecx; /* load frameadress into ecx */\n" |
166 |
" /* */\n" |
166 |
" /* */\n" |
167 |
" .rept 3 /* repeat 3 times */\n" |
167 |
" .rept 3 /* repeat 3 times */\n" |
Lines 177-183
Link Here
|
177 |
" paddusw %%mm1 , %%mm0; /* add mm1 (stored in mm1 and mm2...) */\n" |
177 |
" paddusw %%mm1 , %%mm0; /* add mm1 (stored in mm1 and mm2...) */\n" |
178 |
" paddusw %%mm2 , %%mm0; /* to mm0 */\n" |
178 |
" paddusw %%mm2 , %%mm0; /* to mm0 */\n" |
179 |
" /* */\n" |
179 |
" /* */\n" |
180 |
" movq (%%ebx), %%mm1; /* 8 Pixels from line */\n" |
180 |
" movq (%%esi), %%mm1; /* 8 Pixels from line */\n" |
181 |
" movq (%%ecx), %%mm2; /* 8 Pixels from displaced line */\n" |
181 |
" movq (%%ecx), %%mm2; /* 8 Pixels from displaced line */\n" |
182 |
" movq %%mm2 , %%mm3; /* hold a copy of mm2 in mm3 */\n" |
182 |
" movq %%mm2 , %%mm3; /* hold a copy of mm2 in mm3 */\n" |
183 |
" psubusb %%mm1 , %%mm3; /* positive differences between mm2 and mm1 */\n" |
183 |
" psubusb %%mm1 , %%mm3; /* positive differences between mm2 and mm1 */\n" |
Lines 189-202
Link Here
|
189 |
" paddusw %%mm1 , %%mm0; /* add mm1 (stored in mm1 and mm2...) */\n" |
189 |
" paddusw %%mm1 , %%mm0; /* add mm1 (stored in mm1 and mm2...) */\n" |
190 |
" paddusw %%mm2 , %%mm0; /* to mm0 */\n" |
190 |
" paddusw %%mm2 , %%mm0; /* to mm0 */\n" |
191 |
" addl $8 , %%eax; /* add 8 to frameaddress */\n" |
191 |
" addl $8 , %%eax; /* add 8 to frameaddress */\n" |
192 |
" addl $8 , %%ebx; /* add 8 to frameaddress */\n" |
192 |
" addl $8 , %%esi; /* add 8 to frameaddress */\n" |
193 |
" addl $8 , %%ecx; /* add 8 to frameaddress */\n" |
193 |
" addl $8 , %%ecx; /* add 8 to frameaddress */\n" |
194 |
" .endr /* end loop */\n" |
194 |
" .endr /* end loop */\n" |
195 |
" /* */\n" |
195 |
" /* */\n" |
196 |
" movq %%mm0 , %0 ; /* make mm0 available to gcc ... */\n" |
196 |
" movq %%mm0 , %0 ; /* make mm0 available to gcc ... */\n" |
197 |
:"=m" (a) |
197 |
:"=m" (a) |
198 |
:"m" (ref1), "m" (ref2), "m" (ref3) |
198 |
:"m" (ref1), "m" (ref2), "m" (ref3) |
199 |
:"%eax", "%ebx", "%ecx" |
199 |
:"%eax", "%esi", "%ecx" |
200 |
); |
200 |
); |
201 |
|
201 |
|
202 |
d=a[0]+a[1]+a[2]+a[3]; |
202 |
d=a[0]+a[1]+a[2]+a[3]; |