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