add_protoqw/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";
add_protoqw/unsigned int vp8_variance4x4/,"const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse";
specializeqw/vp8_variance4x4 mmx sse2/;
$vp8_variance4x4_sse2=vp8_variance4x4_wmt;
add_protoqw/unsigned int vp8_variance8x8/,"const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse";
specializeqw/vp8_variance8x8 mmx sse2 media neon/;
$vp8_variance8x8_sse2=vp8_variance8x8_wmt;
$vp8_variance8x8_media=vp8_variance8x8_armv6;
add_protoqw/unsigned int vp8_variance8x16/,"const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse";
specializeqw/vp8_variance8x16 mmx sse2 neon/;
$vp8_variance8x16_sse2=vp8_variance8x16_wmt;
add_protoqw/unsigned int vp8_variance16x8/,"const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse";
specializeqw/vp8_variance16x8 mmx sse2 neon/;
$vp8_variance16x8_sse2=vp8_variance16x8_wmt;
add_protoqw/unsigned int vp8_variance16x16/,"const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse";
specializeqw/vp8_variance16x16 mmx sse2 media neon/;
$vp8_variance16x16_sse2=vp8_variance16x16_wmt;
$vp8_variance16x16_media=vp8_variance16x16_armv6;
#
# Sub-pixel Variance
#
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/unsigned int vp8_sad4x4/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad";
add_protoqw/unsigned int vp8_sad8x8/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad";
add_protoqw/unsigned int vp8_sad8x16/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad";
add_protoqw/unsigned int vp8_sad16x8/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad";
add_protoqw/unsigned int vp8_sad16x16/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int max_sad";
specializeqw/vp8_sad16x16 mmx sse2 sse3 media neon/;
$vp8_sad16x16_sse2=vp8_sad16x16_wmt;
$vp8_sad16x16_media=vp8_sad16x16_armv6;
#
# Multi-block SAD, comparing a reference to N blocks 1 pixel apart horizontally
#
add_protoqw/void vp8_sad4x4x3/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad4x4x3 sse3/;
add_protoqw/void vp8_sad8x8x3/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad8x8x3 sse3/;
add_protoqw/void vp8_sad8x16x3/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad8x16x3 sse3/;
add_protoqw/void vp8_sad16x8x3/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad16x8x3 sse3 ssse3/;
add_protoqw/void vp8_sad16x16x3/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad16x16x3 sse3 ssse3/;
# Note the only difference in the following prototypes is that they return into
# an array of short
add_protoqw/void vp8_sad4x4x8/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array";
specializeqw/vp8_sad4x4x8 sse4_1/;
$vp8_sad4x4x8_sse4_1=vp8_sad4x4x8_sse4;
add_protoqw/void vp8_sad8x8x8/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array";
specializeqw/vp8_sad8x8x8 sse4_1/;
$vp8_sad8x8x8_sse4_1=vp8_sad8x8x8_sse4;
add_protoqw/void vp8_sad8x16x8/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array";
specializeqw/vp8_sad8x16x8 sse4_1/;
$vp8_sad8x16x8_sse4_1=vp8_sad8x16x8_sse4;
add_protoqw/void vp8_sad16x8x8/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array";
specializeqw/vp8_sad16x8x8 sse4_1/;
$vp8_sad16x8x8_sse4_1=vp8_sad16x8x8_sse4;
add_protoqw/void vp8_sad16x16x8/,"const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride, unsigned short *sad_array";
specializeqw/vp8_sad16x16x8 sse4_1/;
$vp8_sad16x16x8_sse4_1=vp8_sad16x16x8_sse4;
#
# Multi-block SAD, comparing a reference to N independent blocks
#
add_protoqw/void vp8_sad4x4x4d/,"const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad4x4x4d sse3/;
add_protoqw/void vp8_sad8x8x4d/,"const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad8x8x4d sse3/;
add_protoqw/void vp8_sad8x16x4d/,"const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad8x16x4d sse3/;
add_protoqw/void vp8_sad16x8x4d/,"const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad16x8x4d sse3/;
add_protoqw/void vp8_sad16x16x4d/,"const unsigned char *src_ptr, int src_stride, const unsigned char * const ref_ptr[], int ref_stride, unsigned int *sad_array";
specializeqw/vp8_sad16x16x4d sse3/;
#
# Encoder functions below this point.
#
if(vpx_config("CONFIG_VP8_ENCODER")eq"yes"){
#
# Sum of squares (vector)
#
add_protoqw/unsigned int vp8_get_mb_ss/,"const short *";
specializeqw/vp8_get_mb_ss mmx sse2/;
#
# SSE (Sum Squared Error)
#
add_protoqw/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";
add_protoqw/unsigned int vp8_mse16x16/,"const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, unsigned int *sse";
add_protoqw/void vp8_copy32xn/,"const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride, int n";
specializeqw/vp8_copy32xn sse2 sse3/;
}
#
# Structured Similarity (SSIM)
#
if(vpx_config("CONFIG_INTERNAL_STATS")eq"yes"){
$opts{arch}eq"x86_64"and$sse2_on_x86_64="sse2";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";
add_protoqw/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";