2 ; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
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.
12 EXPORT |vp8_mse16x16_neon|
13 EXPORT |vp8_get16x16pred_error_neon|
14 EXPORT |vp8_get4x4sse_cs_neon|
20 AREA ||.text||
, CODE
, READONLY
, ALIGN=2
21 ;============================
22 ; r0 unsigned char *src_ptr
23 ; r1 int source_stride
24 ; r2 unsigned char *ref_ptr
26 ; stack unsigned int *sse
27 ;note: in this function, sum is never used. So, we can remove this part of calculation
30 |vp8_mse16x16_neon|
PROC
31 vmov.i8 q7
, #
0 ;q7, q8, q9, q10 - sse
39 vld1.8
{q0}, [r0
], r1
;Load up source and reference
49 vmlal.s16 q7
, d22
, d22
50 vmlal.s16 q8
, d23
, d23
54 vmlal.s16 q9
, d24
, d24
55 vmlal.s16 q10
, d25
, d25
56 vmlal.s16 q7
, d26
, d26
57 vmlal.s16 q8
, d27
, d27
58 vmlal.s16 q9
, d28
, d28
59 vmlal.s16 q10
, d29
, d29
61 bne mse16x16_neon_loop
66 ldr r12
, [sp] ;load *sse from stack
72 vst1.32
{d0[0]}, [r12
]
79 ;============================
80 ; r0 unsigned char *src_ptr
82 ; r2 unsigned char *ref_ptr
84 |vp8_get16x16pred_error_neon|
PROC
85 vmov.i8 q8
, #
0 ;q8 - sum
86 vmov.i8 q9
, #
0 ;q9, q10 - pred_error
91 get16x16pred_error_neon_loop
92 vld1.8
{q0}, [r0
], r1
;Load up source and reference
103 vmlal.s16 q9
, d22
, d22
104 vmlal.s16 q10
, d23
, d23
109 vmlal.s16 q9
, d24
, d24
110 vmlal.s16 q10
, d25
, d25
112 vmlal.s16 q9
, d26
, d26
113 vmlal.s16 q10
, d27
, d27
115 vmlal.s16 q9
, d28
, d28
116 vmlal.s16 q10
, d29
, d29
118 bne get16x16pred_error_neon_loop
120 vadd.u32 q10
, q9
, q10
128 vshr.s32 d10
, d10
, #
8
136 ;=============================
137 ; r0 unsigned char *src_ptr,
138 ; r1 int source_stride,
139 ; r2 unsigned char *ref_ptr,
140 ; r3 int recon_stride
141 |vp8_get4x4sse_cs_neon|
PROC
142 vld1.8
{d0}, [r0
], r1
;Load up source and reference
143 vld1.8
{d4}, [r2
], r3
144 vld1.8
{d1}, [r0
], r1
145 vld1.8
{d5}, [r2
], r3
146 vld1.8
{d2}, [r0
], r1
147 vld1.8
{d6}, [r2
], r3
148 vld1.8
{d3}, [r0
], r1
149 vld1.8
{d7}, [r2
], r3
156 vmull.s16 q7
, d22
, d22
157 vmull.s16 q8
, d24
, d24
158 vmull.s16 q9
, d26
, d26
159 vmull.s16 q10
, d28
, d28