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_recon_b_armv6|
13 EXPORT |vp8_recon2b_armv6|
14 EXPORT |vp8_recon4b_armv6|
16 AREA |.text|
, CODE
, READONLY
; name this block of code
22 ;void recon_b(unsigned char *pred_ptr, short *diff_ptr, unsigned char *dst_ptr, int stride)
29 ; Loop through the block adding the Pred and Diff together. Clamp and then
30 ; store back into the Dst.
33 ; all buffers are expected to be 4 byte aligned coming in and
35 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
39 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
40 |vp8_recon_b_armv6|
PROC
41 stmdb
sp!, {r4 - r9, lr}
44 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
45 ldr r6
, [dif
, #
0] ; 1 | 0
46 ldr r7
, [dif
, #
4] ; 3 | 2
48 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
49 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
51 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
52 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
57 orr r8
, r8
, r9
, lsl #
8
62 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
63 ;; ldr r6, [dif, #8] ; 1 | 0
64 ;; ldr r7, [dif, #12] ; 3 | 2
65 ldr r6
, [dif
, #
0] ; 1 | 0
66 ldr r7
, [dif
, #
4] ; 3 | 2
68 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
69 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
71 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
72 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
77 orr r8
, r8
, r9
, lsl #
8
82 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
83 ;; ldr r6, [dif, #16] ; 1 | 0
84 ;; ldr r7, [dif, #20] ; 3 | 2
85 ldr r6
, [dif
, #
0] ; 1 | 0
86 ldr r7
, [dif
, #
4] ; 3 | 2
88 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
89 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
91 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
92 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
97 orr r8
, r8
, r9
, lsl #
8
102 ldr r4
, [prd
], #
16 ; 3 | 2 | 1 | 0
103 ;; ldr r6, [dif, #24] ; 1 | 0
104 ;; ldr r7, [dif, #28] ; 3 | 2
105 ldr r6
, [dif
, #
0] ; 1 | 0
106 ldr r7
, [dif
, #
4] ; 3 | 2
108 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
109 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
111 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
112 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
116 orr r8
, r8
, r9
, lsl #
8
118 str r8
, [dst
], stride
120 ldmia
sp!, {r4 - r9, pc}
124 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
128 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
133 |vp8_recon4b_armv6|
PROC
134 stmdb
sp!, {r4 - r9, lr}
140 ldr r4
, [prd
], #
4 ; 3 | 2 | 1 | 0
141 ldr r6
, [dif
, #
0] ; 1 | 0
142 ldr r7
, [dif
, #
4] ; 3 | 2
144 pkhbt r8
, r6
, r7
, lsl #
16 ; 2 | 0
145 pkhtb r9
, r7
, r6
, asr #
16 ; 3 | 1
147 uxtab16 r8
, r8
, r4
; 2 | 0 + 3 | 2 | 2 | 0
148 uxtab16 r9
, r9
, r4
, ror #
8 ; 3 | 1 + 0 | 3 | 2 | 1
152 orr r8
, r8
, r9
, lsl #
8
158 ;; ldr r6, [dif, #32]
159 ;; ldr r7, [dif, #36]
163 pkhbt r8
, r6
, r7
, lsl #
16
164 pkhtb r9
, r7
, r6
, asr #
16
167 uxtab16 r9
, r9
, r4
, ror #
8
170 orr r8
, r8
, r9
, lsl #
8
176 ;; ldr r6, [dif, #64]
177 ;; ldr r7, [dif, #68]
181 pkhbt r8
, r6
, r7
, lsl #
16
182 pkhtb r9
, r7
, r6
, asr #
16
185 uxtab16 r9
, r9
, r4
, ror #
8
188 orr r8
, r8
, r9
, lsl #
8
194 ;; ldr r6, [dif, #96]
195 ;; ldr r7, [dif, #100]
199 pkhbt r8
, r6
, r7
, lsl #
16
200 pkhtb r9
, r7
, r6
, asr #
16
203 uxtab16 r9
, r9
, r4
, ror #
8
206 orr r8
, r8
, r9
, lsl #
8
217 ldmia
sp!, {r4 - r9, pc}
221 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
225 ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
230 |vp8_recon2b_armv6|
PROC
231 stmdb
sp!, {r4 - r9, lr}
241 pkhbt r8
, r6
, r7
, lsl #
16
242 pkhtb r9
, r7
, r6
, asr #
16
245 uxtab16 r9
, r9
, r4
, ror #
8
248 orr r8
, r8
, r9
, lsl #
8
254 ;; ldr r6, [dif, #32]
255 ;; ldr r7, [dif, #36]
259 pkhbt r8
, r6
, r7
, lsl #
16
260 pkhtb r9
, r7
, r6
, asr #
16
263 uxtab16 r9
, r9
, r4
, ror #
8
266 orr r8
, r8
, r9
, lsl #
8
277 ldmia
sp!, {r4 - r9, pc}