2 * Copyright (C) 2010 Mans Rullgard
4 * This file is part of Libav.
6 * Libav is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * Libav is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with Libav; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 .macro rac_get_prob h, bs, buf, cw, pr, t0, t1
29 ldrhcs \t1, [\buf], #2
30 smlabb \h, \t0, \pr, \h
33 A orrcs \cw, \cw, \t1, lsl \bs
40 subge \cw, \cw, \h, lsl #16
44 .macro rac_get_128 h, bs, buf, cw, t0, t1
49 ldrhcs \t1, [\buf], #2
53 add \h, \h, \t0, lsl #7
54 A orrcs \cw, \cw, \t1, lsl \bs
62 subge \cw, \cw, \h, lsl #16
66 function ff_decode_block_coeffs_armv6, export=1
67 push {r0,r1,r4-r11,lr}
68 movrel lr, X(ff_vp56_norm_shift)
69 ldrd r4, r5, [sp, #44] @ token_prob, qmul
72 ldm r0, {r5-r7} @ high, bits, buf
74 pkhtbne r11, r11, r11, asr #16
75 ldr r8, [r0, #16] @ code_word
80 rac_get_prob r5, r6, r7, r8, r0, r9, r10
85 rac_get_prob r5, r6, r7, r8, r0, r9, r10
89 add r4, r3, r3, lsl #5
101 add r5, r5, r9, lsl #7
105 A orrcs r8, r8, r10, lsl r6
109 movrel r10, zigzag_scan-1
111 subge r8, r8, r5, lsl #16
122 rac_get_prob r5, r6, r7, r8, r0, r9, r10
123 pkhtb r11, r11, r11, asr #16
132 stm r0, {r5-r7} @ high, bits, buf
133 str r8, [r0, #16] @ code_word
139 add r4, r3, r3, lsl #5
142 pkhtb r11, r11, r11, asr #16
147 rac_get_prob r5, r6, r7, r8, r0, r9, r10
153 rac_get_prob r5, r6, r7, r8, r0, r9, r10
159 rac_get_prob r5, r6, r7, r8, r0, r9, r10
166 rac_get_prob r5, r6, r7, r8, r0, r9, r10
171 rac_get_prob r5, r6, r7, r8, r0, r9, r10
177 rac_get_prob r5, r6, r7, r8, r0, r9, r10
185 rac_get_prob r5, r6, r7, r8, r0, r9, r10
190 rac_get_prob r5, r6, r7, r8, r0, r9, r10
197 rac_get_prob r5, r6, r7, r8, r0, r9, r10
205 rac_get_prob r5, r6, r7, r8, r0, r9, r10
209 movrel r4, X(ff_vp8_dct_cat_prob)
211 ldr r4, [r4, r12, lsl #2]
218 rac_get_prob r5, r6, r7, r8, r0, r9, r10
228 add r4, r3, r3, lsl #5
231 rac_get_128 r5, r6, r7, r8, r9, r10
235 movrel r9, zigzag_scan-1