; ; Copyright (c) 2010 The VP8 project authors. All Rights Reserved. ; ; Use of this source code is governed by a BSD-style license ; that can be found in the LICENSE file in the root of the source ; tree. An additional intellectual property rights grant can be found ; in the file PATENTS. All contributing project authors may ; be found in the AUTHORS file in the root of the source tree. ; EXPORT |vp8_decode_value_neon| EXPORT |vp8dx_start_decode_neon| EXPORT |vp8dx_stop_decode_neon| EXPORT |vp8dx_decode_bool_neon| ARM REQUIRE8 PRESERVE8 INCLUDE vpx_asm_offsets.asm AREA |.text|, CODE, READONLY ; name this block of code ; int z = 0; ; int bit; ; for ( bit=bits-1; bit>=0; bit-- ) ; { ; z |= (vp8dx_decode_bool(br, 0x80)<> 8) mov lr, r0 mov r0, #0 ;bit = 0 ; subs r5, r3, r4, lsl #24 subhs r2, r2, r4 ;range = br->range-split movlo r2, r4 ;range = split movhs r0, #1 ;bit = 1 movhs r3, r5 ;value = value-bigsplit cmp r2, #0x80 blt range_less_0x80 strd r2, r3, [lr, #bool_decoder_range] ;store result ldmia sp!, {r4 - r5, pc} range_less_0x80 ldrd r4, r5, [lr, #bool_decoder_count] ;load count, pos, buffer ldr r1, [lr, #bool_decoder_buffer] clz r12, r2 add r1, r1, r5 sub r12, r12, #24 subs r4, r4, r12 ;count -= shift mov r2, r2, lsl r12 ;range <<= shift mov r3, r3, lsl r12 ;value <<= shift addle r4, r4, #8 ;count += 8 ldrleb r12, [r1], #1 ;br->buffer[br->pos] rsble r1, r4, #8 ;-count addle r5, r5, #1 ;br->pos++ orrle r3, r3, r12, lsl r1 ;value |= (br->buffer[br->pos]) << (-count) strd r2, r3, [lr, #bool_decoder_range] ;store result strd r4, r5, [lr, #bool_decoder_count] ldmia sp!, {r4 - r5, pc} ENDP ; |vp8dx_decode_bool_neon| END