2 ; Copyright (c) 2010 The VP8 project authors. All Rights Reserved.
4 ; Use of this source code is governed by a BSD-style license and patent
5 ; grant that can be found in the LICENSE file in the root of the source
6 ; tree. All contributing project authors may be found in the AUTHORS
7 ; file in the root of the source tree.
11 EXPORT |vp8_build_intra_predictors_mby_neon_func|
12 EXPORT |vp8_build_intra_predictors_mby_s_neon_func|
18 AREA ||.text||
, CODE
, READONLY
, ALIGN=2
19 ; r0 unsigned char *y_buffer
20 ; r1 unsigned char *ypred_ptr
26 |vp8_build_intra_predictors_mby_neon_func|
PROC
39 ldr r4
, [sp, #
24] ; Up
40 ldr r5
, [sp, #
28] ; Left
42 ; Default the DC average to 128
46 ; Zero out running sum
49 ; compute shift and jump
51 beq skip_dc_pred_up_left
53 ; Load above row, if it exists
68 ; Move back to interger registers
77 ; Load left row, if it exists
119 add r7
, r7
, #
3 ; Shift
122 add r12
, r12
, r5
, lsl r4
123 mov r5
, r12
, lsr r7
; expected_dc
147 ; Copy down above row
239 ; Compute yabove_row - ytop_left
266 vqadd.s16 q10
, q1
, q4
267 vqadd.s16 q11
, q1
, q5
269 vqadd.s16 q12
, q2
, q4
270 vqadd.s16 q13
, q2
, q5
272 vqadd.s16 q14
, q3
, q4
273 vqadd.s16 q15
, q3
, q5
275 vqshrun.s16 d0
, q8
, #
0
276 vqshrun.s16 d1
, q9
, #
0
278 vqshrun.s16 d2
, q10
, #
0
279 vqshrun.s16 d3
, q11
, #
0
281 vqshrun.s16 d4
, q12
, #
0
282 vqshrun.s16 d5
, q13
, #
0
284 vqshrun.s16 d6
, q14
, #
0
285 vqshrun.s16 d7
, q15
, #
0
293 bne case_tm_pred_loop
299 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
300 ; r0 unsigned char *y_buffer
301 ; r1 unsigned char *ypred_ptr
307 |vp8_build_intra_predictors_mby_s_neon_func|
PROC
310 mov r1
, r0
; unsigned char *ypred_ptr = x->dst.y_buffer; //x->Predictor;
322 ldr r4
, [sp, #
24] ; Up
323 ldr r5
, [sp, #
28] ; Left
325 ; Default the DC average to 128
329 ; Zero out running sum
332 ; compute shift and jump
334 beq skip_dc_pred_up_left_s
336 ; Load above row, if it exists
338 beq skip_dc_pred_up_s
351 ; Move back to interger registers
356 beq skip_dc_pred_left_s
360 ; Load left row, if it exists
402 add r7
, r7
, #
3 ; Shift
405 add r12
, r12
, r5
, lsl r4
406 mov r5
, r12
, lsr r7
; expected_dc
410 skip_dc_pred_up_left_s
411 vst1.u8
{q0}, [r1
], r2
412 vst1.u8
{q0}, [r1
], r2
413 vst1.u8
{q0}, [r1
], r2
414 vst1.u8
{q0}, [r1
], r2
415 vst1.u8
{q0}, [r1
], r2
416 vst1.u8
{q0}, [r1
], r2
417 vst1.u8
{q0}, [r1
], r2
418 vst1.u8
{q0}, [r1
], r2
419 vst1.u8
{q0}, [r1
], r2
420 vst1.u8
{q0}, [r1
], r2
421 vst1.u8
{q0}, [r1
], r2
422 vst1.u8
{q0}, [r1
], r2
423 vst1.u8
{q0}, [r1
], r2
424 vst1.u8
{q0}, [r1
], r2
425 vst1.u8
{q0}, [r1
], r2
426 vst1.u8
{q0}, [r1
], r2
430 ; Copy down above row
434 vst1.u8
{q0}, [r1
], r2
435 vst1.u8
{q0}, [r1
], r2
436 vst1.u8
{q0}, [r1
], r2
437 vst1.u8
{q0}, [r1
], r2
438 vst1.u8
{q0}, [r1
], r2
439 vst1.u8
{q0}, [r1
], r2
440 vst1.u8
{q0}, [r1
], r2
441 vst1.u8
{q0}, [r1
], r2
442 vst1.u8
{q0}, [r1
], r2
443 vst1.u8
{q0}, [r1
], r2
444 vst1.u8
{q0}, [r1
], r2
445 vst1.u8
{q0}, [r1
], r2
446 vst1.u8
{q0}, [r1
], r2
447 vst1.u8
{q0}, [r1
], r2
448 vst1.u8
{q0}, [r1
], r2
449 vst1.u8
{q0}, [r1
], r2
464 vst1.u8
{q0}, [r1
], r2
465 vst1.u8
{q1}, [r1
], r2
466 vst1.u8
{q2}, [r1
], r2
467 vst1.u8
{q3}, [r1
], r2
477 vst1.u8
{q0}, [r1
], r2
478 vst1.u8
{q1}, [r1
], r2
479 vst1.u8
{q2}, [r1
], r2
480 vst1.u8
{q3}, [r1
], r2
491 vst1.u8
{q0}, [r1
], r2
492 vst1.u8
{q1}, [r1
], r2
493 vst1.u8
{q2}, [r1
], r2
494 vst1.u8
{q3}, [r1
], r2
504 vst1.u8
{q0}, [r1
], r2
505 vst1.u8
{q1}, [r1
], r2
506 vst1.u8
{q2}, [r1
], r2
507 vst1.u8
{q3}, [r1
], r2
522 ; Compute yabove_row - ytop_left
549 vqadd.s16 q10
, q1
, q4
550 vqadd.s16 q11
, q1
, q5
552 vqadd.s16 q12
, q2
, q4
553 vqadd.s16 q13
, q2
, q5
555 vqadd.s16 q14
, q3
, q4
556 vqadd.s16 q15
, q3
, q5
558 vqshrun.s16 d0
, q8
, #
0
559 vqshrun.s16 d1
, q9
, #
0
561 vqshrun.s16 d2
, q10
, #
0
562 vqshrun.s16 d3
, q11
, #
0
564 vqshrun.s16 d4
, q12
, #
0
565 vqshrun.s16 d5
, q13
, #
0
567 vqshrun.s16 d6
, q14
, #
0
568 vqshrun.s16 d7
, q15
, #
0
570 vst1.u8
{q0}, [r1
], r2
571 vst1.u8
{q1}, [r1
], r2
572 vst1.u8
{q2}, [r1
], r2
573 vst1.u8
{q3}, [r1
], r2
576 bne case_tm_pred_loop_s