Merge "Skip computation of distortion in vp8_pick_inter_mode if active_map is used"
[libvpx.git] / vp8 / common / arm / armv6 / dc_only_idct_add_v6.asm
blobe0660e9fd033f46d89c0b8d80bf4a4e4e4f63c5d
2 ; Copyright (c) 2010 The WebM 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.
10 EXPORT |vp8_dc_only_idct_add_v6|
12 AREA |.text|, CODE, READONLY
14 ;void vp8_dc_only_idct_add_v6(short input_dc, unsigned char *pred_ptr,
15 ; unsigned char *dst_ptr, int pitch, int stride)
16 ; r0 input_dc
17 ; r1 pred_ptr
18 ; r2 dest_ptr
19 ; r3 pitch
20 ; sp stride
22 |vp8_dc_only_idct_add_v6| PROC
23 stmdb sp!, {r4 - r7, lr}
25 add r0, r0, #4 ; input_dc += 4
26 ldr r12, c0x0000FFFF
27 ldr r4, [r1], r3
28 ldr r6, [r1], r3
29 and r0, r12, r0, asr #3 ; input_dc >> 3 + mask
30 ldr lr, [sp, #20]
31 orr r0, r0, r0, lsl #16 ; a1 | a1
33 uxtab16 r5, r0, r4 ; a1+2 | a1+0
34 uxtab16 r4, r0, r4, ror #8 ; a1+3 | a1+1
35 uxtab16 r7, r0, r6
36 uxtab16 r6, r0, r6, ror #8
37 usat16 r5, #8, r5
38 usat16 r4, #8, r4
39 usat16 r7, #8, r7
40 usat16 r6, #8, r6
41 orr r5, r5, r4, lsl #8
42 orr r7, r7, r6, lsl #8
43 ldr r4, [r1], r3
44 ldr r6, [r1]
45 str r5, [r2], lr
46 str r7, [r2], lr
48 uxtab16 r5, r0, r4
49 uxtab16 r4, r0, r4, ror #8
50 uxtab16 r7, r0, r6
51 uxtab16 r6, r0, r6, ror #8
52 usat16 r5, #8, r5
53 usat16 r4, #8, r4
54 usat16 r7, #8, r7
55 usat16 r6, #8, r6
56 orr r5, r5, r4, lsl #8
57 orr r7, r7, r6, lsl #8
58 str r5, [r2], lr
59 str r7, [r2]
61 ldmia sp!, {r4 - r7, pc}
63 ENDP ; |vp8_dc_only_idct_add_v6|
65 ; Constant Pool
66 c0x0000FFFF DCD 0x0000FFFF
67 END