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_recon_b_armv6|
12 EXPORT |vp8_recon2b_armv6|
13 EXPORT |vp8_recon4b_armv6|
15 AREA |.text|
, CODE
, READONLY
; name this block of code
21 ;void recon_b(unsigned char *pred_ptr, short *diff_ptr, unsigned char *dst_ptr, int stride)
28 ; Loop through the block adding the Pred and Diff together. Clamp and then
29 ; store back into the Dst.
32 ; all buffers are expected to be 4 byte aligned coming in and
34 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
38 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
39 |vp8_recon_b_armv6|
PROC
40 stmdb
sp!, {r4 - r9, lr}
43 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
44 ldr r6
, [dif
, #
0] ; 1 | 0
45 ldr r7
, [dif
, #
4] ; 3 | 2
47 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
48 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
50 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
51 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
56 orr r8
, r8
, r9
, lsl #
8
61 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
62 ;; ldr r6, [dif, #8] ; 1 | 0
63 ;; ldr r7, [dif, #12] ; 3 | 2
64 ldr r6
, [dif
, #
0] ; 1 | 0
65 ldr r7
, [dif
, #
4] ; 3 | 2
67 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
68 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
70 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
71 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
76 orr r8
, r8
, r9
, lsl #
8
81 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
82 ;; ldr r6, [dif, #16] ; 1 | 0
83 ;; ldr r7, [dif, #20] ; 3 | 2
84 ldr r6
, [dif
, #
0] ; 1 | 0
85 ldr r7
, [dif
, #
4] ; 3 | 2
87 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
88 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
90 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
91 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
96 orr r8
, r8
, r9
, lsl #
8
101 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
102 ;; ldr r6, [dif, #24] ; 1 | 0
103 ;; ldr r7, [dif, #28] ; 3 | 2
104 ldr r6
, [dif
, #
0] ; 1 | 0
105 ldr r7
, [dif
, #
4] ; 3 | 2
107 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
108 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
110 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
111 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
115 orr r8
, r8
, r9
, lsl #
8
117 str r8
, [dst
], stride
119 ldmia
sp!, {r4 - r9, pc}
123 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
127 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
132 |vp8_recon4b_armv6|
PROC
133 stmdb
sp!, {r4 - r9, lr}
139 ldr r4
, [prd
], #
4 ; 3 | 2 | 1 | 0
140 ldr r6
, [dif
, #
0] ; 1 | 0
141 ldr r7
, [dif
, #
4] ; 3 | 2
143 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
144 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
146 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
147 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
151 orr r8
, r8
, r9
, lsl #
8
157 ;; ldr r6, [dif, #32]
158 ;; ldr r7, [dif, #36]
162 pkhbt r8
, r6
, r7
, lsl #
16
163 pkhtb r9
, r7
, r6
, asr #
16
166 uxtab16 r9
, r9
, r4
, ror #
8
169 orr r8
, r8
, r9
, lsl #
8
175 ;; ldr r6, [dif, #64]
176 ;; ldr r7, [dif, #68]
180 pkhbt r8
, r6
, r7
, lsl #
16
181 pkhtb r9
, r7
, r6
, asr #
16
184 uxtab16 r9
, r9
, r4
, ror #
8
187 orr r8
, r8
, r9
, lsl #
8
193 ;; ldr r6, [dif, #96]
194 ;; ldr r7, [dif, #100]
198 pkhbt r8
, r6
, r7
, lsl #
16
199 pkhtb r9
, r7
, r6
, asr #
16
202 uxtab16 r9
, r9
, r4
, ror #
8
205 orr r8
, r8
, r9
, lsl #
8
216 ldmia
sp!, {r4 - r9, pc}
220 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
224 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
229 |vp8_recon2b_armv6|
PROC
230 stmdb
sp!, {r4 - r9, lr}
240 pkhbt r8
, r6
, r7
, lsl #
16
241 pkhtb r9
, r7
, r6
, asr #
16
244 uxtab16 r9
, r9
, r4
, ror #
8
247 orr r8
, r8
, r9
, lsl #
8
253 ;; ldr r6, [dif, #32]
254 ;; ldr r7, [dif, #36]
258 pkhbt r8
, r6
, r7
, lsl #
16
259 pkhtb r9
, r7
, r6
, asr #
16
262 uxtab16 r9
, r9
, r4
, ror #
8
265 orr r8
, r8
, r9
, lsl #
8
276 ldmia
sp!, {r4 - r9, pc}