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
28 ldrhcs \t1, [\buf], #2
29 smlabb \h, \t0, \pr, \h
31 orrcs \cw, \cw, \t1, lsl \bs
35 subge \cw, \cw, \h, lsl #16
39 .macro rac_get_128 h, bs, buf, cw, t0, t1
43 ldrhcs \t1, [\buf], #2
46 add \h, \h, \t0, lsl #7
47 orrcs \cw, \cw, \t1, lsl \bs
51 subge \cw, \cw, \h, lsl #16
55 function ff_decode_block_coeffs_armv6, export=1
56 push {r0,r1,r4-r11,lr}
57 movrel lr, X(ff_vp56_norm_shift)
58 ldrd r4, r5, [sp, #44] @ token_prob, qmul
61 ldm r0, {r5-r7} @ high, bits, buf
62 pkhtbne r11, r11, r11, asr #16
63 ldr r8, [r0, #16] @ code_word
68 rac_get_prob r5, r6, r7, r8, r0, r9, r10
73 rac_get_prob r5, r6, r7, r8, r0, r9, r10
77 add r4, r3, r3, lsl #5
87 add r5, r5, r9, lsl #7
88 orrcs r8, r8, r10, lsl r6
92 movrel r10, zigzag_scan-1
93 subge r8, r8, r5, lsl #16
103 rac_get_prob r5, r6, r7, r8, r0, r9, r10
104 pkhtb r11, r11, r11, asr #16
112 stm r0, {r5-r7} @ high, bits, buf
113 str r8, [r0, #16] @ code_word
119 add r4, r3, r3, lsl #5
122 pkhtb r11, r11, r11, asr #16
127 rac_get_prob r5, r6, r7, r8, r0, r9, r10
133 rac_get_prob r5, r6, r7, r8, r0, r9, r10
138 rac_get_prob r5, r6, r7, r8, r0, r9, r10
144 rac_get_prob r5, r6, r7, r8, r0, r9, r10
149 rac_get_prob r5, r6, r7, r8, r0, r9, r10
155 rac_get_prob r5, r6, r7, r8, r0, r9, r10
162 rac_get_prob r5, r6, r7, r8, r0, r9, r10
166 rac_get_prob r5, r6, r7, r8, r0, r9, r10
172 rac_get_prob r5, r6, r7, r8, r0, r9, r10
178 rac_get_prob r5, r6, r7, r8, r0, r9, r10
181 movrel r4, X(ff_vp8_dct_cat_prob)
183 ldr r4, [r4, r12, lsl #2]
190 rac_get_prob r5, r6, r7, r8, r0, r9, r10
199 add r4, r3, r3, lsl #5
202 rac_get_128 r5, r6, r7, r8, r9, r10
205 movrel r9, zigzag_scan-1