Index: source/libvpx/vpx_dsp/vpx_dsp_rtcd_defs.pl |
diff --git a/source/libvpx/vpx_dsp/vpx_dsp_rtcd_defs.pl b/source/libvpx/vpx_dsp/vpx_dsp_rtcd_defs.pl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ebec9ec066045b79cf4cc4496c143a309ecc7e28 |
--- /dev/null |
+++ b/source/libvpx/vpx_dsp/vpx_dsp_rtcd_defs.pl |
@@ -0,0 +1,395 @@ |
+sub vpx_dsp_forward_decls() { |
+print <<EOF |
+/* |
+ * DSP |
+ */ |
+ |
+#include "vpx/vpx_integer.h" |
+ |
+EOF |
+} |
+forward_decls qw/vpx_dsp_forward_decls/; |
+ |
+# Functions which use x86inc.asm instead of x86_abi_support.asm |
+if (vpx_config("CONFIG_USE_X86INC") eq "yes") { |
+ $mmx_x86inc = 'mmx'; |
+ $sse_x86inc = 'sse'; |
+ $sse2_x86inc = 'sse2'; |
+ $ssse3_x86inc = 'ssse3'; |
+ $avx_x86inc = 'avx'; |
+ $avx2_x86inc = 'avx2'; |
+} else { |
+ $mmx_x86inc = $sse_x86inc = $sse2_x86inc = $ssse3_x86inc = |
+ $avx_x86inc = $avx2_x86inc = ''; |
+} |
+ |
+# Functions which are 64 bit only. |
+if ($opts{arch} eq "x86_64") { |
+ $mmx_x86_64 = 'mmx'; |
+ $sse2_x86_64 = 'sse2'; |
+ $ssse3_x86_64 = 'ssse3'; |
+ $avx_x86_64 = 'avx'; |
+ $avx2_x86_64 = 'avx2'; |
+} else { |
+ $mmx_x86_64 = $sse2_x86_64 = $ssse3_x86_64 = |
+ $avx_x86_64 = $avx2_x86_64 = ''; |
+} |
+ |
+if (vpx_config("CONFIG_ENCODERS") eq "yes") { |
+# |
+# Single block SAD |
+# |
+add_proto qw/unsigned int vpx_sad64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad64x64 avx2 neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad64x32 avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad32x64 avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad32x32 avx2 neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad32x16 avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad16x32/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad16x16 mmx media neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad16x8 mmx neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad8x16 mmx neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad8x8 mmx neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad8x4/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad4x8/, "$sse_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+specialize qw/vpx_sad4x4 mmx neon/, "$sse_x86inc"; |
+ |
+# |
+# Avg |
+# |
+add_proto qw/unsigned int vpx_sad64x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad64x64_avg avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad64x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad64x32_avg avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad32x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad32x64_avg avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad32x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad32x32_avg avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad32x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad32x16_avg avx2/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad16x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad16x32_avg/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad16x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad16x16_avg/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad16x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad16x8_avg/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad8x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad8x16_avg/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad8x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad8x8_avg/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad8x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad8x4_avg/, "$sse2_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad4x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad4x8_avg/, "$sse_x86inc"; |
+ |
+add_proto qw/unsigned int vpx_sad4x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+specialize qw/vpx_sad4x4_avg/, "$sse_x86inc"; |
+ |
+# |
+# Multi-block SAD, comparing a reference to N blocks 1 pixel apart horizontally |
+# |
+# Blocks of 3 |
+add_proto qw/void vpx_sad64x64x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ |
+add_proto qw/void vpx_sad32x32x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ |
+add_proto qw/void vpx_sad16x16x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad16x16x3 sse3 ssse3/; |
+ |
+add_proto qw/void vpx_sad16x8x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad16x8x3 sse3 ssse3/; |
+ |
+add_proto qw/void vpx_sad8x16x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad8x16x3 sse3/; |
+ |
+add_proto qw/void vpx_sad8x8x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad8x8x3 sse3/; |
+ |
+add_proto qw/void vpx_sad4x4x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad4x4x3 sse3/; |
+ |
+# Blocks of 8 |
+add_proto qw/void vpx_sad64x64x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ |
+add_proto qw/void vpx_sad32x32x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ |
+add_proto qw/void vpx_sad16x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad16x16x8 sse4_1/; |
+ |
+add_proto qw/void vpx_sad16x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad16x8x8 sse4_1/; |
+ |
+add_proto qw/void vpx_sad8x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad8x16x8 sse4_1/; |
+ |
+add_proto qw/void vpx_sad8x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad8x8x8 sse4_1/; |
+ |
+add_proto qw/void vpx_sad8x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ |
+add_proto qw/void vpx_sad4x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ |
+add_proto qw/void vpx_sad4x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad4x4x8 sse4_1/; |
+ |
+# |
+# Multi-block SAD, comparing a reference to N independent blocks |
+# |
+add_proto qw/void vpx_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad64x64x4d avx2 neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad64x32x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad32x64x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad32x32x4d avx2 neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad32x16x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad16x32x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad16x16x4d neon/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad16x8x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad8x16x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad8x8x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad8x4x4d/, "$sse2_x86inc"; |
+ |
+add_proto qw/void vpx_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad4x8x4d/, "$sse_x86inc"; |
+ |
+add_proto qw/void vpx_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+specialize qw/vpx_sad4x4x4d/, "$sse_x86inc"; |
+ |
+if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { |
+ # |
+ # Single block SAD |
+ # |
+ add_proto qw/unsigned int vpx_highbd_sad64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad64x64/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad64x32/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad32x64/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad32x32/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad32x16/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad16x32/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad16x16/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad16x8/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad8x16/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad8x8/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad8x4/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad4x8/; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; |
+ specialize qw/vpx_highbd_sad4x4/; |
+ |
+ # |
+ # Avg |
+ # |
+ add_proto qw/unsigned int vpx_highbd_sad64x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad64x64_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad64x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad64x32_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad32x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad32x64_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad32x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad32x32_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad32x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad32x16_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad16x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad16x32_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad16x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad16x16_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad16x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad16x8_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad8x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad8x16_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad8x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad8x8_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad8x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad8x4_avg/, "$sse2_x86inc"; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad4x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad4x8_avg/; |
+ |
+ add_proto qw/unsigned int vpx_highbd_sad4x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; |
+ specialize qw/vpx_highbd_sad4x4_avg/; |
+ |
+ # |
+ # Multi-block SAD, comparing a reference to N blocks 1 pixel apart horizontally |
+ # |
+ # Blocks of 3 |
+ add_proto qw/void vpx_highbd_sad64x64x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad64x64x3/; |
+ |
+ add_proto qw/void vpx_highbd_sad32x32x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad32x32x3/; |
+ |
+ add_proto qw/void vpx_highbd_sad16x16x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad16x16x3/; |
+ |
+ add_proto qw/void vpx_highbd_sad16x8x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad16x8x3/; |
+ |
+ add_proto qw/void vpx_highbd_sad8x16x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x16x3/; |
+ |
+ add_proto qw/void vpx_highbd_sad8x8x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x8x3/; |
+ |
+ add_proto qw/void vpx_highbd_sad4x4x3/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad4x4x3/; |
+ |
+ # Blocks of 8 |
+ add_proto qw/void vpx_highbd_sad64x64x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad64x64x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad32x32x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad32x32x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad16x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad16x16x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad16x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad16x8x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad8x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x16x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad8x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x8x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad8x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x4x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad4x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad4x8x8/; |
+ |
+ add_proto qw/void vpx_highbd_sad4x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad4x4x8/; |
+ |
+ # |
+ # Multi-block SAD, comparing a reference to N independent blocks |
+ # |
+ add_proto qw/void vpx_highbd_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad64x64x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad64x32x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad32x64x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad32x32x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad32x16x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad16x32x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad16x16x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad16x8x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x16x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x8x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad8x4x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad4x8x4d/, "$sse2_x86inc"; |
+ |
+ add_proto qw/void vpx_highbd_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, uint32_t *sad_array"; |
+ specialize qw/vpx_highbd_sad4x4x4d/, "$sse2_x86inc"; |
+ |
+} # CONFIG_VP9_HIGHBITDEPTH |
+} # CONFIG_ENCODERS |
+ |
+1; |