• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1;
2;  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3;
4;  Use of this source code is governed by a BSD-style license
5;  that can be found in the LICENSE file in the root of the source
6;  tree. An additional intellectual property rights grant can be found
7;  in the file PATENTS.  All contributing project authors may
8;  be found in the AUTHORS file in the root of the source tree.
9;
10
11
12    EXPORT  |vp8_recon4b_neon|
13    ARM
14    REQUIRE8
15    PRESERVE8
16
17    AREA ||.text||, CODE, READONLY, ALIGN=2
18
19; r0    unsigned char  *pred_ptr,
20; r1    short *diff_ptr,
21; r2    unsigned char *dst_ptr,
22; r3    int stride
23
24|vp8_recon4b_neon| PROC
25    vld1.u8         {q12, q13}, [r0]!   ;load data from pred_ptr
26    vld1.16         {q8, q9}, [r1]!     ;load data from diff_ptr
27    vld1.u8         {q14, q15}, [r0]
28    vld1.16         {q10, q11}, [r1]!
29
30    vmovl.u8        q0, d24             ;modify Pred data from 8 bits to 16 bits
31    vmovl.u8        q1, d25
32    vmovl.u8        q2, d26
33    vmovl.u8        q3, d27
34    vmovl.u8        q4, d28
35    vmovl.u8        q5, d29
36    vmovl.u8        q6, d30
37    vld1.16         {q12, q13}, [r1]!
38    vmovl.u8        q7, d31
39    vld1.16         {q14, q15}, [r1]
40
41    vadd.s16        q0, q0, q8          ;add Diff data and Pred data together
42    vadd.s16        q1, q1, q9
43    vadd.s16        q2, q2, q10
44    vadd.s16        q3, q3, q11
45    vadd.s16        q4, q4, q12
46    vadd.s16        q5, q5, q13
47    vadd.s16        q6, q6, q14
48    vadd.s16        q7, q7, q15
49
50    vqmovun.s16     d0, q0              ;CLAMP() saturation
51    vqmovun.s16     d1, q1
52    vqmovun.s16     d2, q2
53    vqmovun.s16     d3, q3
54    vqmovun.s16     d4, q4
55    vqmovun.s16     d5, q5
56    vqmovun.s16     d6, q6
57    vqmovun.s16     d7, q7
58    add             r0, r2, r3
59
60    vst1.u8         {q0}, [r2]          ;store result
61    vst1.u8         {q1}, [r0], r3
62    add             r2, r0, r3
63    vst1.u8         {q2}, [r0]
64    vst1.u8         {q3}, [r2], r3
65
66    bx             lr
67
68    ENDP
69    END
70