Mercurial > libavcodec.hg
comparison arm/dsputil_armv6.S @ 11111:95b1fd6057d3 libavcodec
ARMv6 optimised pix_abs16_y2
author | mru |
---|---|
date | Tue, 09 Feb 2010 16:13:31 +0000 |
parents | 45de2da90eaf |
children | ffe1ea72ea29 |
comparison
equal
deleted
inserted
replaced
11110:45de2da90eaf | 11111:95b1fd6057d3 |
---|---|
368 usada8 r0, r5, r9, r0 | 368 usada8 r0, r5, r9, r0 |
369 bgt 1b | 369 bgt 1b |
370 | 370 |
371 pop {r4-r11, pc} | 371 pop {r4-r11, pc} |
372 .endfunc | 372 .endfunc |
373 | |
374 .macro usad_y2 p0, p1, p2, p3, n0, n1, n2, n3 | |
375 ldr \n0, [r2] | |
376 eor \n1, \p0, \n0 | |
377 uhadd8 \p0, \p0, \n0 | |
378 and \n1, \n1, lr | |
379 ldr \n2, [r1] | |
380 uadd8 \p0, \p0, \n1 | |
381 ldr \n1, [r2, #4] | |
382 usada8 r0, \p0, \n2, r0 | |
383 pld [r1, r3] | |
384 eor \n3, \p1, \n1 | |
385 uhadd8 \p1, \p1, \n1 | |
386 and \n3, \n3, lr | |
387 ldr \p0, [r1, #4] | |
388 uadd8 \p1, \p1, \n3 | |
389 ldr \n2, [r2, #8] | |
390 usada8 r0, \p1, \p0, r0 | |
391 pld [r2, r3] | |
392 eor \p0, \p2, \n2 | |
393 uhadd8 \p2, \p2, \n2 | |
394 and \p0, \p0, lr | |
395 ldr \p1, [r1, #8] | |
396 uadd8 \p2, \p2, \p0 | |
397 ldr \n3, [r2, #12] | |
398 usada8 r0, \p2, \p1, r0 | |
399 eor \p1, \p3, \n3 | |
400 uhadd8 \p3, \p3, \n3 | |
401 and \p1, \p1, lr | |
402 ldr \p0, [r1, #12] | |
403 uadd8 \p3, \p3, \p1 | |
404 add r1, r1, r3 | |
405 usada8 r0, \p3, \p0, r0 | |
406 add r2, r2, r3 | |
407 .endm | |
408 | |
409 function ff_pix_abs16_y2_armv6, export=1 | |
410 pld [r1] | |
411 pld [r2] | |
412 ldr r12, [sp] | |
413 push {r4-r11, lr} | |
414 mov r0, #0 | |
415 mov lr, #1 | |
416 orr lr, lr, lr, lsl #8 | |
417 orr lr, lr, lr, lsl #16 | |
418 ldr r4, [r2] | |
419 ldr r5, [r2, #4] | |
420 ldr r6, [r2, #8] | |
421 ldr r7, [r2, #12] | |
422 add r2, r2, r3 | |
423 1: | |
424 usad_y2 r4, r5, r6, r7, r8, r9, r10, r11 | |
425 subs r12, r12, #2 | |
426 usad_y2 r8, r9, r10, r11, r4, r5, r6, r7 | |
427 bgt 1b | |
428 | |
429 pop {r4-r11, pc} | |
430 .endfunc |