diff options
Diffstat (limited to 'vp8/decoder/arm')
-rw-r--r-- | vp8/decoder/arm/arm_dsystemdependent.c | 13 | ||||
-rw-r--r-- | vp8/decoder/arm/armv6/dboolhuff_v6.asm | 163 | ||||
-rw-r--r-- | vp8/decoder/arm/dboolhuff_arm.h | 43 | ||||
-rw-r--r-- | vp8/decoder/arm/neon/dboolhuff_neon.asm | 160 |
4 files changed, 0 insertions, 379 deletions
diff --git a/vp8/decoder/arm/arm_dsystemdependent.c b/vp8/decoder/arm/arm_dsystemdependent.c index e9741e286..02e45d170 100644 --- a/vp8/decoder/arm/arm_dsystemdependent.c +++ b/vp8/decoder/arm/arm_dsystemdependent.c @@ -14,7 +14,6 @@ #include "blockd.h" #include "pragmas.h" #include "postproc.h" -#include "dboolhuff.h" #include "dequantize.h" #include "onyxd_int.h" @@ -35,12 +34,6 @@ void vp8_arch_arm_decode_init(VP8D_COMP *pbi) pbi->dequant.dc_idct_add_y_block = vp8_dequant_dc_idct_add_y_block_v6; pbi->dequant.idct_add_y_block = vp8_dequant_idct_add_y_block_v6; pbi->dequant.idct_add_uv_block = vp8_dequant_idct_add_uv_block_v6; -#if 0 /*For use with RTCD, when implemented*/ - pbi->dboolhuff.start = vp8dx_start_decode_c; - pbi->dboolhuff.fill = vp8dx_bool_decoder_fill_c; - pbi->dboolhuff.debool = vp8dx_decode_bool_c; - pbi->dboolhuff.devalue = vp8dx_decode_value_c; -#endif } #endif @@ -54,12 +47,6 @@ void vp8_arch_arm_decode_init(VP8D_COMP *pbi) pbi->dequant.dc_idct_add_y_block = vp8_dequant_dc_idct_add_y_block_neon; pbi->dequant.idct_add_y_block = vp8_dequant_idct_add_y_block_neon; pbi->dequant.idct_add_uv_block = vp8_dequant_idct_add_uv_block_neon; -#if 0 /*For use with RTCD, when implemented*/ - pbi->dboolhuff.start = vp8dx_start_decode_c; - pbi->dboolhuff.fill = vp8dx_bool_decoder_fill_c; - pbi->dboolhuff.debool = vp8dx_decode_bool_c; - pbi->dboolhuff.devalue = vp8dx_decode_value_c; -#endif } #endif #endif diff --git a/vp8/decoder/arm/armv6/dboolhuff_v6.asm b/vp8/decoder/arm/armv6/dboolhuff_v6.asm deleted file mode 100644 index 6515804bb..000000000 --- a/vp8/decoder/arm/armv6/dboolhuff_v6.asm +++ /dev/null @@ -1,163 +0,0 @@ -; -; Copyright (c) 2010 The WebM 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_v6| - EXPORT |vp8dx_start_decode_v6| - EXPORT |vp8dx_stop_decode_v6| - EXPORT |vp8dx_decode_bool_v6| - - ARM - REQUIRE8 - PRESERVE8 - - INCLUDE vpx_asm_offsets.asm - -br RN r0 -prob RN r1 -bits RN r1 - 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)<<bit); -; } -; return z; - -;int vp8_decode_value_v6 ( BOOL_DECODER *br, int bits ) -|vp8_decode_value_v6| PROC - stmdb sp!, {r4 - r6, lr} - mov r4, br - mov r5, bits - mov r6, #0 - - subs r5, r5, #1 - bmi decode_value_exit - -decode_value_loop - mov prob, #0x80 - mov br, r4 - bl vp8dx_decode_bool_v6_internal ; needed for conversion to s file - orr r6, r6, r0, lsl r5 - subs r5, r5, #1 - bpl decode_value_loop - -decode_value_exit - mov r0, r6 - ldmia sp!, {r4 - r6, pc} - ENDP ; |vp8_decode_value_v6| - - -;void vp8dx_start_decode_v6 ( BOOL_DECODER *br, unsigned char *source ) -|vp8dx_start_decode_v6| PROC - stmdb sp!, {r4 - r5, lr} - mov r2, #0 - mov r3, #255 - - str r2, [br, #bool_decoder_lowvalue] - str r3, [br, #bool_decoder_range] - str r1, [br, #bool_decoder_buffer] - - mov r3, #8 - mov r2, #4 - str r3, [br, #bool_decoder_count] - str r2, [br, #bool_decoder_pos] - - ldrb r2, [r1, #3] - ldrb r3, [r1, #2] - ldrb r4, [r1, #1] - ldrb r5, [r1] - - orr r1, r2, r3, lsl #8 - orr r1, r1, r4, lsl #16 - orr r1, r1, r5, lsl #24 - - str r1, [br, #bool_decoder_value] - - ldmia sp!, {r4 - r5, pc} - ENDP ; |vp8dx_start_decode_v6| - - -;void vp8dx_stop_decode_v6 ( BOOL_DECODER *bc ); -|vp8dx_stop_decode_v6| PROC - mov pc, lr - ENDP ; |vp8dx_stop_decode_v6| - - -; bigsplit RN r1 -; buffer_v RN r1 -; count_v RN r4 -; range_v RN r2 -; value_v RN r3 -; pos_v RN r5 -; split RN r6 -; bit RN lr -;int vp8dx_decode_bool_v6 ( BOOL_DECODER *br, int probability ) -|vp8dx_decode_bool_v6| PROC -vp8dx_decode_bool_v6_internal - stmdb sp!, {r4 - r6, lr} - - ldr r2, [br, #bool_decoder_range] - ldr r3, [br, #bool_decoder_value] - - mov r6, r2, lsl #8 - sub r6, r6, #256 ; split = 1 + (((range-1) * probability) >> 8) - mov r12, #1 - smlawb r6, r6, prob, r12 - - mov lr, #0 - subs r5, r3, r6, lsl #24 - - ;cmp r3, r1 - movhs lr, #1 - movhs r3, r5 - subhs r2, r2, r6 - movlo r2, r6 - - cmp r2, #0x80 - blt range_less_0x80 - ;strd r2, r3, [br, #bool_decoder_range] - str r2, [br, #bool_decoder_range] - str r3, [br, #bool_decoder_value] - mov r0, lr - ldmia sp!, {r4 - r6, pc} - -range_less_0x80 - ldr r5, [br, #bool_decoder_pos] - ldr r1, [br, #bool_decoder_buffer] - ldr r4, [br, #bool_decoder_count] - add r1, r1, r5 - - clz r12, r2 - sub r12, r12, #24 - subs r4, r4, r12 - ldrleb r6, [r1], #1 - mov r2, r2, lsl r12 - mov r3, r3, lsl r12 - addle r4, r4, #8 - rsble r12, r4, #8 - addle r5, r5, #1 - orrle r3, r3, r6, lsl r12 - - ;strd r2, r3, [br, #bool_decoder_range] - ;strd r4, r5, [br, #bool_decoder_count] - str r2, [br, #bool_decoder_range] - str r3, [br, #bool_decoder_value] - str r4, [br, #bool_decoder_count] - str r5, [br, #bool_decoder_pos] - - mov r0, lr - - ldmia sp!, {r4 - r6, pc} - ENDP ; |vp8dx_decode_bool_v6| - - END diff --git a/vp8/decoder/arm/dboolhuff_arm.h b/vp8/decoder/arm/dboolhuff_arm.h deleted file mode 100644 index 985951c7c..000000000 --- a/vp8/decoder/arm/dboolhuff_arm.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef DBOOLHUFF_ARM_H -#define DBOOLHUFF_ARM_H - -/* JLK - * There are currently no arm-optimized versions of - * these functions. As they are implemented, they - * can be uncommented below and added to - * arm/dsystemdependent.c - * - * The existing asm code is likely so different as - * to be useless. However, its been left (for now) - * for reference. - */ -#if 0 -#if HAVE_ARMV6 -#undef vp8_dbool_start -#define vp8_dbool_start vp8dx_start_decode_v6 - -#undef vp8_dbool_fill -#define vp8_dbool_fill vp8_bool_decoder_fill_v6 - -#undef vp8_dbool_debool -#define vp8_dbool_debool vp8_decode_bool_v6 - -#undef vp8_dbool_devalue -#define vp8_dbool_devalue vp8_decode_value_v6 -#endif /* HAVE_ARMV6 */ - -#if HAVE_ARMV7 -#undef vp8_dbool_start -#define vp8_dbool_start vp8dx_start_decode_neon - -#undef vp8_dbool_fill -#define vp8_dbool_fill vp8_bool_decoder_fill_neon - -#undef vp8_dbool_debool -#define vp8_dbool_debool vp8_decode_bool_neon - -#undef vp8_dbool_devalue -#define vp8_dbool_devalue vp8_decode_value_neon -#endif /* HAVE_ARMV7 */ -#endif -#endif /* DBOOLHUFF_ARM_H */ diff --git a/vp8/decoder/arm/neon/dboolhuff_neon.asm b/vp8/decoder/arm/neon/dboolhuff_neon.asm deleted file mode 100644 index ff3ffda97..000000000 --- a/vp8/decoder/arm/neon/dboolhuff_neon.asm +++ /dev/null @@ -1,160 +0,0 @@ -; -; Copyright (c) 2010 The WebM 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)<<bit); -; } -; return z; - -;int vp8_decode_value_neon ( BOOL_DECODER *br, int bits ) -|vp8_decode_value_neon| PROC - stmdb sp!, {r4 - r6, lr} - mov r4, r0 - mov r5, r1 - mov r6, #0 - - subs r5, r5, #1 - bmi decode_value_exit - -decode_value_loop - mov r1, #0x80 - mov r0, r4 - bl vp8dx_decode_bool_neon_internal ; needed for conversion to s file - orr r6, r6, r0, lsl r5 - subs r5, r5, #1 - bpl decode_value_loop - -decode_value_exit - mov r0, r6 - ldmia sp!, {r4 - r6, pc} - ENDP ; |vp8_decode_value_neon| - - -;void vp8dx_start_decode_neon ( BOOL_DECODER *br, unsigned char *source ) -|vp8dx_start_decode_neon| PROC - stmdb sp!, {r4 - r5, lr} - mov r2, #0 - mov r3, #255 - - str r2, [r0, #bool_decoder_lowvalue] - str r3, [r0, #bool_decoder_range] - str r1, [r0, #bool_decoder_buffer] - - mov r3, #8 - mov r2, #4 - str r3, [r0, #bool_decoder_count] - str r2, [r0, #bool_decoder_pos] - - ldrb r2, [r1, #3] - ldrb r3, [r1, #2] - ldrb r4, [r1, #1] - ldrb r5, [r1] - - orr r1, r2, r3, lsl #8 - orr r1, r1, r4, lsl #16 - orr r1, r1, r5, lsl #24 - - str r1, [r0, #bool_decoder_value] - - ldmia sp!, {r4 - r5, pc} - ENDP ; |vp8dx_start_decode_neon| - - -;void vp8dx_stop_decode_neon ( BOOL_DECODER *bc ); -|vp8dx_stop_decode_neon| PROC - mov pc, lr - ENDP ; |vp8dx_stop_decode_neon| - - -; bigsplit RN r1 -; buffer_v RN r1 -; count_v RN r4 -; range_v RN r2 -; value_v RN r3 -; pos_v RN r5 -; split RN r6 -; bit RN lr -;int vp8dx_decode_bool_neon ( BOOL_DECODER *br, int probability ) -|vp8dx_decode_bool_neon| PROC -vp8dx_decode_bool_neon_internal -;LDRD and STRD doubleword data transfers must be eight-byte aligned. Use ALIGN 8 -;before memory allocation - stmdb sp!, {r4 - r5, lr} - - ldr r2, [r0, #bool_decoder_range] ;load range (r2), value(r3) - ldr r3, [r0, #bool_decoder_value] - ;ldrd r2, r3, [r0, #bool_decoder_range] ;ldrd costs 2 cycles - ; - - mov r4, r2, lsl #8 - sub r4, r4, #256 - mov r12, #1 - - smlawb r4, r4, r1, r12 ;split = 1 + (((range-1) * probability) >> 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 |