193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgsub vp8_common_forward_decls() { 293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgprint <<EOF 393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org/* 493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org * VP8 593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org */ 693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgstruct blockd; 893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgstruct macroblockd; 993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgstruct loop_filter_info; 1093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 1193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org/* Encoder forward decls */ 1293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgstruct block; 1393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgstruct macroblock; 1493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgstruct variance_vtable; 1593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgunion int_mv; 1693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgstruct yv12_buffer_config; 1793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgEOF 1893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} 1993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgforward_decls qw/vp8_common_forward_decls/; 2093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 2193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 2293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# system state 2393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 2493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_clear_system_state/, ""; 2593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_clear_system_state mmx/; 2693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_clear_system_state_mmx=vpx_reset_mmx_state; 2793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 2893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 2993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Dequant 3093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 3193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_dequantize_b/, "struct blockd*, short *dqc"; 3293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_dequantize_b mmx media neon/; 3393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dequantize_b_media=vp8_dequantize_b_v6; 3493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 3593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_dequant_idct_add/, "short *input, short *dq, unsigned char *output, int stride"; 3693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_dequant_idct_add mmx media neon dspr2/; 3793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dequant_idct_add_media=vp8_dequant_idct_add_v6; 3893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dequant_idct_add_dspr2=vp8_dequant_idct_add_dspr2; 3993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 4093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_dequant_idct_add_y_block/, "short *q, short *dq, unsigned char *dst, int stride, char *eobs"; 41d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_dequant_idct_add_y_block mmx sse2 media neon dspr2/; 4293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dequant_idct_add_y_block_media=vp8_dequant_idct_add_y_block_v6; 4393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dequant_idct_add_y_block_dspr2=vp8_dequant_idct_add_y_block_dspr2; 4493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 4593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_dequant_idct_add_uv_block/, "short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs"; 46d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_dequant_idct_add_uv_block mmx sse2 media neon dspr2/; 4793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dequant_idct_add_uv_block_media=vp8_dequant_idct_add_uv_block_v6; 4893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dequant_idct_add_y_block_dspr2=vp8_dequant_idct_add_y_block_dspr2; 4993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 5093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 5193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Loopfilter 5293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 5393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_mbv/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi"; 5493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_loop_filter_mbv mmx sse2 media neon dspr2/; 5593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_mbv_media=vp8_loop_filter_mbv_armv6; 5693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_mbv_dspr2=vp8_loop_filter_mbv_dspr2; 5793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 5893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_bv/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi"; 59d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_loop_filter_bv mmx sse2 media neon dspr2/; 6093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_bv_media=vp8_loop_filter_bv_armv6; 6193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_bv_dspr2=vp8_loop_filter_bv_dspr2; 6293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 6393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_mbh/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi"; 6493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_loop_filter_mbh mmx sse2 media neon dspr2/; 6593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_mbh_media=vp8_loop_filter_mbh_armv6; 6693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_mbh_dspr2=vp8_loop_filter_mbh_dspr2; 6793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 6893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_bh/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi"; 69d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_loop_filter_bh mmx sse2 media neon dspr2/; 7093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_bh_media=vp8_loop_filter_bh_armv6; 7193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_bh_dspr2=vp8_loop_filter_bh_dspr2; 7293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 7393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 7493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_simple_mbv/, "unsigned char *y, int ystride, const unsigned char *blimit"; 75d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_loop_filter_simple_mbv mmx sse2 media neon/; 7693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbv_c=vp8_loop_filter_simple_vertical_edge_c; 7793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbv_mmx=vp8_loop_filter_simple_vertical_edge_mmx; 7893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbv_sse2=vp8_loop_filter_simple_vertical_edge_sse2; 7993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbv_media=vp8_loop_filter_simple_vertical_edge_armv6; 80d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org$vp8_loop_filter_simple_mbv_neon=vp8_loop_filter_mbvs_neon; 8193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 8293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_simple_mbh/, "unsigned char *y, int ystride, const unsigned char *blimit"; 8393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_loop_filter_simple_mbh mmx sse2 media neon/; 8493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbh_c=vp8_loop_filter_simple_horizontal_edge_c; 8593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbh_mmx=vp8_loop_filter_simple_horizontal_edge_mmx; 8693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbh_sse2=vp8_loop_filter_simple_horizontal_edge_sse2; 8793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbh_media=vp8_loop_filter_simple_horizontal_edge_armv6; 8893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_mbh_neon=vp8_loop_filter_mbhs_neon; 8993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 9093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_simple_bv/, "unsigned char *y, int ystride, const unsigned char *blimit"; 91d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_loop_filter_simple_bv mmx sse2 media neon/; 9293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bv_c=vp8_loop_filter_bvs_c; 9393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bv_mmx=vp8_loop_filter_bvs_mmx; 9493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bv_sse2=vp8_loop_filter_bvs_sse2; 9593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bv_media=vp8_loop_filter_bvs_armv6; 96d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org$vp8_loop_filter_simple_bv_neon=vp8_loop_filter_bvs_neon; 9793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 9893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_loop_filter_simple_bh/, "unsigned char *y, int ystride, const unsigned char *blimit"; 9993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_loop_filter_simple_bh mmx sse2 media neon/; 10093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bh_c=vp8_loop_filter_bhs_c; 10193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bh_mmx=vp8_loop_filter_bhs_mmx; 10293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bh_sse2=vp8_loop_filter_bhs_sse2; 10393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bh_media=vp8_loop_filter_bhs_armv6; 10493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_loop_filter_simple_bh_neon=vp8_loop_filter_bhs_neon; 10593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 10693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 10793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# IDCT 10893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 10993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org#idct16 11093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_short_idct4x4llm/, "short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride"; 11193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_short_idct4x4llm mmx media neon dspr2/; 11293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_idct4x4llm_media=vp8_short_idct4x4llm_v6_dual; 11393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_idct4x4llm_dspr2=vp8_short_idct4x4llm_dspr2; 11493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 11593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org#iwalsh1 11693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_short_inv_walsh4x4_1/, "short *input, short *output"; 11793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_short_inv_walsh4x4_1 dspr2/; 11893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_inv_walsh4x4_1_dspr2=vp8_short_inv_walsh4x4_1_dspr2; 11993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# no asm yet 12093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 12193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org#iwalsh16 12293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_short_inv_walsh4x4/, "short *input, short *output"; 12393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_short_inv_walsh4x4 mmx sse2 media neon dspr2/; 12493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_inv_walsh4x4_media=vp8_short_inv_walsh4x4_v6; 12593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_inv_walsh4x4_dspr2=vp8_short_inv_walsh4x4_dspr2; 12693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 12793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org#idct1_scalar_add 12893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_dc_only_idct_add/, "short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride"; 12993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_dc_only_idct_add mmx media neon dspr2/; 13093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dc_only_idct_add_media=vp8_dc_only_idct_add_v6; 13193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_dc_only_idct_add_dspr2=vp8_dc_only_idct_add_dspr2; 13293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 13393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 13493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# RECON 13593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 13693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_copy_mem16x16/, "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch"; 13793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_copy_mem16x16 mmx sse2 media neon dspr2/; 13893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_copy_mem16x16_media=vp8_copy_mem16x16_v6; 13993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_copy_mem16x16_dspr2=vp8_copy_mem16x16_dspr2; 14093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 14193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_copy_mem8x8/, "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch"; 14293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_copy_mem8x8 mmx media neon dspr2/; 14393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_copy_mem8x8_media=vp8_copy_mem8x8_v6; 14493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_copy_mem8x8_dspr2=vp8_copy_mem8x8_dspr2; 14593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 14693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_copy_mem8x4/, "unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch"; 14793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_copy_mem8x4 mmx media neon dspr2/; 14893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_copy_mem8x4_media=vp8_copy_mem8x4_v6; 14993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_copy_mem8x4_dspr2=vp8_copy_mem8x4_dspr2; 15093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 15193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_build_intra_predictors_mby_s/, "struct macroblockd *x, unsigned char * yabove_row, unsigned char * yleft, int left_stride, unsigned char * ypred_ptr, int y_stride"; 152d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_build_intra_predictors_mby_s sse2 ssse3 neon/; 15393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 15493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_build_intra_predictors_mbuv_s/, "struct macroblockd *x, unsigned char * uabove_row, unsigned char * vabove_row, unsigned char *uleft, unsigned char *vleft, int left_stride, unsigned char * upred_ptr, unsigned char * vpred_ptr, int pred_stride"; 155d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_build_intra_predictors_mbuv_s sse2 ssse3 neon/; 15693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 15793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_intra4x4_predict/, "unsigned char *Above, unsigned char *yleft, int left_stride, int b_mode, unsigned char *dst, int dst_stride, unsigned char top_left"; 15893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_intra4x4_predict media/; 15993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_intra4x4_predict_media=vp8_intra4x4_predict_armv6; 16093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 16193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 16293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Postproc 16393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 16493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgif (vpx_config("CONFIG_POSTPROC") eq "yes") { 16593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_mbpost_proc_down/, "unsigned char *dst, int pitch, int rows, int cols,int flimit"; 16693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_mbpost_proc_down mmx sse2/; 16793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org $vp8_mbpost_proc_down_sse2=vp8_mbpost_proc_down_xmm; 16893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 16993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_mbpost_proc_across_ip/, "unsigned char *dst, int pitch, int rows, int cols,int flimit"; 17093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_mbpost_proc_across_ip sse2/; 17193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org $vp8_mbpost_proc_across_ip_sse2=vp8_mbpost_proc_across_ip_xmm; 17293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 17393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_post_proc_down_and_across_mb_row/, "unsigned char *src, unsigned char *dst, int src_pitch, int dst_pitch, int cols, unsigned char *flimits, int size"; 17493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_post_proc_down_and_across_mb_row sse2/; 17593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 17693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_plane_add_noise/, "unsigned char *s, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int w, unsigned int h, int pitch"; 17793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_plane_add_noise mmx sse2/; 17893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org $vp8_plane_add_noise_sse2=vp8_plane_add_noise_wmt; 17993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 18093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_blend_mb_inner/, "unsigned char *y, unsigned char *u, unsigned char *v, int y1, int u1, int v1, int alpha, int stride"; 18193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org # no asm yet 18293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 18393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_blend_mb_outer/, "unsigned char *y, unsigned char *u, unsigned char *v, int y1, int u1, int v1, int alpha, int stride"; 18493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org # no asm yet 18593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 18693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_blend_b/, "unsigned char *y, unsigned char *u, unsigned char *v, int y1, int u1, int v1, int alpha, int stride"; 18793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org # no asm yet 18893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 18993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_filter_by_weight16x16/, "unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight"; 19093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_filter_by_weight16x16 sse2/; 19193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 19293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_filter_by_weight8x8/, "unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight"; 19393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_filter_by_weight8x8 sse2/; 19493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 19593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_filter_by_weight4x4/, "unsigned char *src, int src_stride, unsigned char *dst, int dst_stride, int src_weight"; 19693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org # no asm yet 19793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} 19893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 19993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 20093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Subpixel 20193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 20293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sixtap_predict16x16/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 20393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sixtap_predict16x16 mmx sse2 ssse3 media neon dspr2/; 20493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict16x16_media=vp8_sixtap_predict16x16_armv6; 20593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict16x16_dspr2=vp8_sixtap_predict16x16_dspr2; 20693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 20793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sixtap_predict8x8/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 20893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sixtap_predict8x8 mmx sse2 ssse3 media neon dspr2/; 20993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict8x8_media=vp8_sixtap_predict8x8_armv6; 21093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict8x8_dspr2=vp8_sixtap_predict8x8_dspr2; 21193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 21293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sixtap_predict8x4/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 21393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sixtap_predict8x4 mmx sse2 ssse3 media neon dspr2/; 21493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict8x4_media=vp8_sixtap_predict8x4_armv6; 21593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict8x4_dspr2=vp8_sixtap_predict8x4_dspr2; 21693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 21793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sixtap_predict4x4/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 218ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org# Disable neon while investigating https://code.google.com/p/webm/issues/detail?id=817 219ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.orgspecialize qw/vp8_sixtap_predict4x4 mmx ssse3 media dspr2/; 22093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict4x4_media=vp8_sixtap_predict4x4_armv6; 22193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sixtap_predict4x4_dspr2=vp8_sixtap_predict4x4_dspr2; 22293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 22393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_bilinear_predict16x16/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 22493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_bilinear_predict16x16 mmx sse2 ssse3 media neon/; 22593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_bilinear_predict16x16_media=vp8_bilinear_predict16x16_armv6; 22693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 22793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_bilinear_predict8x8/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 22893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_bilinear_predict8x8 mmx sse2 ssse3 media neon/; 22993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_bilinear_predict8x8_media=vp8_bilinear_predict8x8_armv6; 23093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 23193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_bilinear_predict8x4/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 23293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_bilinear_predict8x4 mmx media neon/; 23393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_bilinear_predict8x4_media=vp8_bilinear_predict8x4_armv6; 23493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 23593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_bilinear_predict4x4/, "unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch"; 23693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_bilinear_predict4x4 mmx media neon/; 23793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_bilinear_predict4x4_media=vp8_bilinear_predict4x4_armv6; 23893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 23993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 24093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Whole-pixel Variance 24193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 24293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance4x4/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 24393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_variance4x4 mmx sse2/; 24493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance4x4_sse2=vp8_variance4x4_wmt; 24593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 24693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance8x8/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 24793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_variance8x8 mmx sse2 media neon/; 24893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance8x8_sse2=vp8_variance8x8_wmt; 24993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance8x8_media=vp8_variance8x8_armv6; 25093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 25193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance8x16/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 25293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_variance8x16 mmx sse2 neon/; 25393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance8x16_sse2=vp8_variance8x16_wmt; 25493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 25593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance16x8/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 25693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_variance16x8 mmx sse2 neon/; 25793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance16x8_sse2=vp8_variance16x8_wmt; 25893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 25993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance16x16/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 26093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_variance16x16 mmx sse2 media neon/; 26193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance16x16_sse2=vp8_variance16x16_wmt; 26293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance16x16_media=vp8_variance16x16_armv6; 26393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 26493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 26593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Sub-pixel Variance 26693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 26793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sub_pixel_variance4x4/, "const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse"; 26893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sub_pixel_variance4x4 mmx sse2/; 26993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_variance4x4_sse2=vp8_sub_pixel_variance4x4_wmt; 27093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 27193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sub_pixel_variance8x8/, "const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse"; 2727765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgspecialize qw/vp8_sub_pixel_variance8x8 mmx sse2 media neon_asm/; 27393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_variance8x8_sse2=vp8_sub_pixel_variance8x8_wmt; 27493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_variance8x8_media=vp8_sub_pixel_variance8x8_armv6; 2757765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org$vp8_sub_pixel_variance8x8_neon_asm=vp8_sub_pixel_variance8x8_neon; 27693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 27793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sub_pixel_variance8x16/, "const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse"; 27893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sub_pixel_variance8x16 mmx sse2/; 27993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_variance8x16_sse2=vp8_sub_pixel_variance8x16_wmt; 28093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 28193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sub_pixel_variance16x8/, "const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse"; 28293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sub_pixel_variance16x8 mmx sse2 ssse3/; 28393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_variance16x8_sse2=vp8_sub_pixel_variance16x8_wmt; 28493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 28593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sub_pixel_variance16x16/, "const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse"; 2867765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgspecialize qw/vp8_sub_pixel_variance16x16 mmx sse2 ssse3 media neon_asm/; 28793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_variance16x16_sse2=vp8_sub_pixel_variance16x16_wmt; 28893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_variance16x16_media=vp8_sub_pixel_variance16x16_armv6; 2897765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org$vp8_sub_pixel_variance16x16_neon_asm=vp8_sub_pixel_variance16x16_neon; 29093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 29193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance_halfpixvar16x16_h/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 29287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgspecialize qw/vp8_variance_halfpixvar16x16_h mmx sse2 media neon/; 29393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance_halfpixvar16x16_h_sse2=vp8_variance_halfpixvar16x16_h_wmt; 29493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance_halfpixvar16x16_h_media=vp8_variance_halfpixvar16x16_h_armv6; 29593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 29693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance_halfpixvar16x16_v/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 29787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgspecialize qw/vp8_variance_halfpixvar16x16_v mmx sse2 media neon/; 29893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance_halfpixvar16x16_v_sse2=vp8_variance_halfpixvar16x16_v_wmt; 29993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance_halfpixvar16x16_v_media=vp8_variance_halfpixvar16x16_v_armv6; 30093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 30193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_variance_halfpixvar16x16_hv/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 30287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgspecialize qw/vp8_variance_halfpixvar16x16_hv mmx sse2 media neon/; 30393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance_halfpixvar16x16_hv_sse2=vp8_variance_halfpixvar16x16_hv_wmt; 30493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_variance_halfpixvar16x16_hv_media=vp8_variance_halfpixvar16x16_hv_armv6; 30593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 30693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 30793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Single block SAD 30893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 30993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sad4x4/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"; 31093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad4x4 mmx sse2 neon/; 31193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad4x4_sse2=vp8_sad4x4_wmt; 31293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 31393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sad8x8/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"; 31493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x8 mmx sse2 neon/; 31593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad8x8_sse2=vp8_sad8x8_wmt; 31693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 31793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sad8x16/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"; 31893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x16 mmx sse2 neon/; 31993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad8x16_sse2=vp8_sad8x16_wmt; 32093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 32193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sad16x8/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"; 32293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x8 mmx sse2 neon/; 32393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad16x8_sse2=vp8_sad16x8_wmt; 32493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 32593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sad16x16/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad"; 32693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x16 mmx sse2 sse3 media neon/; 32793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad16x16_sse2=vp8_sad16x16_wmt; 32893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad16x16_media=vp8_sad16x16_armv6; 32993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 33093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 33193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Multi-block SAD, comparing a reference to N blocks 1 pixel apart horizontally 33293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 33393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad4x4x3/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array"; 33493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad4x4x3 sse3/; 33593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 33693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad8x8x3/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array"; 33793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x8x3 sse3/; 33893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 33993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad8x16x3/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array"; 34093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x16x3 sse3/; 34193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 34293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad16x8x3/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array"; 34393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x8x3 sse3 ssse3/; 34493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 34593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad16x16x3/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array"; 34693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x16x3 sse3 ssse3/; 34793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 34893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Note the only difference in the following prototypes is that they return into 34993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# an array of short 35093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad4x4x8/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array"; 35193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad4x4x8 sse4_1/; 35293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad4x4x8_sse4_1=vp8_sad4x4x8_sse4; 35393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 35493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad8x8x8/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array"; 35593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x8x8 sse4_1/; 35693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad8x8x8_sse4_1=vp8_sad8x8x8_sse4; 35793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 35893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad8x16x8/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array"; 35993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x16x8 sse4_1/; 36093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad8x16x8_sse4_1=vp8_sad8x16x8_sse4; 36193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 36293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad16x8x8/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array"; 36393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x8x8 sse4_1/; 36493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad16x8x8_sse4_1=vp8_sad16x8x8_sse4; 36593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 36693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad16x16x8/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array"; 36793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x16x8 sse4_1/; 36893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sad16x16x8_sse4_1=vp8_sad16x16x8_sse4; 36993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 37093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 37193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Multi-block SAD, comparing a reference to N independent blocks 37293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 37393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad4x4x4d/, "const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array"; 37493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad4x4x4d sse3/; 37593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 37693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad8x8x4d/, "const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array"; 37793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x8x4d sse3/; 37893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 37993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad8x16x4d/, "const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array"; 38093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad8x16x4d sse3/; 38193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 38293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad16x8x4d/, "const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array"; 38393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x8x4d sse3/; 38493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 38593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_sad16x16x4d/, "const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array"; 38693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sad16x16x4d sse3/; 38793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 38893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 38993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Encoder functions below this point. 39093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 39193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgif (vpx_config("CONFIG_VP8_ENCODER") eq "yes") { 39293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 39393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 39493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Sum of squares (vector) 39593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 39693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_get_mb_ss/, "const short *"; 39793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_get_mb_ss mmx sse2/; 39893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 39993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 40093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# SSE (Sum Squared Error) 40193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 40293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_sub_pixel_mse16x16/, "const unsigned char *src_ptr, int source_stride, int xoffset, int yoffset, const unsigned char *ref_ptr, int Refstride, unsigned int *sse"; 40393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_sub_pixel_mse16x16 mmx sse2/; 40493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_sub_pixel_mse16x16_sse2=vp8_sub_pixel_mse16x16_wmt; 40593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 40693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_mse16x16/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse"; 40787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgspecialize qw/vp8_mse16x16 mmx sse2 media neon/; 40893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_mse16x16_sse2=vp8_mse16x16_wmt; 40993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_mse16x16_media=vp8_mse16x16_armv6; 41093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 41193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/unsigned int vp8_get4x4sse_cs/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride"; 41287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgspecialize qw/vp8_get4x4sse_cs mmx neon/; 41393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 41493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 41593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Block copy 41693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 41793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgif ($opts{arch} =~ /x86/) { 41893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_copy32xn/, "const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n"; 41993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_copy32xn sse2 sse3/; 42093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} 42193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 42293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 42393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Structured Similarity (SSIM) 42493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 42593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgif (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") { 42693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org $opts{arch} eq "x86_64" and $sse2_on_x86_64 = "sse2"; 42793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 42893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_ssim_parms_8x8/, "unsigned char *s, int sp, unsigned char *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr"; 42993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_ssim_parms_8x8/, "$sse2_on_x86_64"; 43093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 43193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_ssim_parms_16x16/, "unsigned char *s, int sp, unsigned char *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr"; 43293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_ssim_parms_16x16/, "$sse2_on_x86_64"; 43393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} 43493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 43593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 43693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Forward DCT 43793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 43893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_short_fdct4x4/, "short *input, short *output, int pitch"; 439d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_short_fdct4x4 mmx sse2 media neon/; 44093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_fdct4x4_media=vp8_short_fdct4x4_armv6; 44193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 44293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_short_fdct8x4/, "short *input, short *output, int pitch"; 443d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgspecialize qw/vp8_short_fdct8x4 mmx sse2 media neon/; 44493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_fdct8x4_media=vp8_short_fdct8x4_armv6; 44593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 44693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_short_walsh4x4/, "short *input, short *output, int pitch"; 447ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgspecialize qw/vp8_short_walsh4x4 sse2 media neon/; 44893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_short_walsh4x4_media=vp8_short_walsh4x4_armv6; 44993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 45093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 45193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Quantizer 45293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 45393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_regular_quantize_b/, "struct block *, struct blockd *"; 45488b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgspecialize qw/vp8_regular_quantize_b sse2 sse4_1/; 45593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 45693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_fast_quantize_b/, "struct block *, struct blockd *"; 4577765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgspecialize qw/vp8_fast_quantize_b sse2 ssse3 media neon_asm/; 45893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_fast_quantize_b_media=vp8_fast_quantize_b_armv6; 4597765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org$vp8_fast_quantize_b_neon_asm=vp8_fast_quantize_b_neon; 46093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 46193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_regular_quantize_b_pair/, "struct block *b1, struct block *b2, struct blockd *d1, struct blockd *d2"; 46293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# no asm yet 46393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 46493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_fast_quantize_b_pair/, "struct block *b1, struct block *b2, struct blockd *d1, struct blockd *d2"; 4657765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgspecialize qw/vp8_fast_quantize_b_pair neon_asm/; 4667765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org$vp8_fast_quantize_b_pair_neon_asm=vp8_fast_quantize_b_pair_neon; 46793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 46893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_quantize_mb/, "struct macroblock *"; 46993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_quantize_mb neon/; 47093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 47193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_quantize_mby/, "struct macroblock *"; 47293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_quantize_mby neon/; 47393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 47493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_quantize_mbuv/, "struct macroblock *"; 47593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_quantize_mbuv neon/; 47693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 47793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 47893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Block subtraction 47993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 48093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/int vp8_block_error/, "short *coeff, short *dqcoeff"; 48193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_block_error mmx sse2/; 48293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_block_error_sse2=vp8_block_error_xmm; 48393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 48493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/int vp8_mbblock_error/, "struct macroblock *mb, int dc"; 48593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_mbblock_error mmx sse2/; 48693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_mbblock_error_sse2=vp8_mbblock_error_xmm; 48793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 48893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/int vp8_mbuverror/, "struct macroblock *mb"; 48993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_mbuverror mmx sse2/; 49093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_mbuverror_sse2=vp8_mbuverror_xmm; 49193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 49293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_subtract_b/, "struct block *be, struct blockd *bd, int pitch"; 493ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgspecialize qw/vp8_subtract_b mmx sse2 media neon/; 49493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_subtract_b_media=vp8_subtract_b_armv6; 49593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 49693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_subtract_mby/, "short *diff, unsigned char *src, int src_stride, unsigned char *pred, int pred_stride"; 497ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgspecialize qw/vp8_subtract_mby mmx sse2 media neon/; 49893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_subtract_mby_media=vp8_subtract_mby_armv6; 49993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 50093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/void vp8_subtract_mbuv/, "short *diff, unsigned char *usrc, unsigned char *vsrc, int src_stride, unsigned char *upred, unsigned char *vpred, int pred_stride"; 501ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgspecialize qw/vp8_subtract_mbuv mmx sse2 media neon/; 50293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_subtract_mbuv_media=vp8_subtract_mbuv_armv6; 50393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 50493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 50593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Motion search 50693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 50793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/int vp8_full_search_sad/, "struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv"; 50893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_full_search_sad sse3 sse4_1/; 50993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_full_search_sad_sse3=vp8_full_search_sadx3; 51093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_full_search_sad_sse4_1=vp8_full_search_sadx8; 51193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 51293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/int vp8_refining_search_sad/, "struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv"; 51393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgspecialize qw/vp8_refining_search_sad sse3/; 51493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_refining_search_sad_sse3=vp8_refining_search_sadx4; 51593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 51693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgadd_proto qw/int vp8_diamond_search_sad/, "struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv"; 51793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org$vp8_diamond_search_sad_sse3=vp8_diamond_search_sadx4; 51893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 51993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 52093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Alt-ref Noise Reduction (ARNR) 52193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 52293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgif (vpx_config("CONFIG_REALTIME_ONLY") ne "yes") { 52393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org add_proto qw/void vp8_temporal_filter_apply/, "unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count"; 52493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_temporal_filter_apply sse2/; 52593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} 52693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 52793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 52893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Denoiser filter 52993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# 53093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgif (vpx_config("CONFIG_TEMPORAL_DENOISING") eq "yes") { 531118f379ec73bf762ee63784bc5f41ffd41107470johannkoenig@chromium.org add_proto qw/int vp8_denoiser_filter/, "unsigned char *mc_running_avg_y, int mc_avg_y_stride, unsigned char *running_avg_y, int avg_y_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising"; 53293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org specialize qw/vp8_denoiser_filter sse2 neon/; 533e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org add_proto qw/int vp8_denoiser_filter_uv/, "unsigned char *mc_running_avg, int mc_avg_stride, unsigned char *running_avg, int avg_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising"; 534e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org specialize qw/vp8_denoiser_filter_uv sse2 neon/; 53593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} 53693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 53793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# End of encoder only functions 53893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} 53993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org1; 540