vpx_asm_stubs.c 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*
  2. * Copyright (c) 2014 The WebM project authors. All Rights Reserved.
  3. *
  4. * Use of this source code is governed by a BSD-style license
  5. * that can be found in the LICENSE file in the root of the source
  6. * tree. An additional intellectual property rights grant can be found
  7. * in the file PATENTS. All contributing project authors may
  8. * be found in the AUTHORS file in the root of the source tree.
  9. */
  10. #include "./vpx_config.h"
  11. #include "./vpx_dsp_rtcd.h"
  12. #include "vpx_dsp/x86/convolve.h"
  13. #if HAVE_SSE2
  14. filter8_1dfunction vpx_filter_block1d16_v8_sse2;
  15. filter8_1dfunction vpx_filter_block1d16_h8_sse2;
  16. filter8_1dfunction vpx_filter_block1d8_v8_sse2;
  17. filter8_1dfunction vpx_filter_block1d8_h8_sse2;
  18. filter8_1dfunction vpx_filter_block1d4_v8_sse2;
  19. filter8_1dfunction vpx_filter_block1d4_h8_sse2;
  20. filter8_1dfunction vpx_filter_block1d16_v8_avg_sse2;
  21. filter8_1dfunction vpx_filter_block1d16_h8_avg_sse2;
  22. filter8_1dfunction vpx_filter_block1d8_v8_avg_sse2;
  23. filter8_1dfunction vpx_filter_block1d8_h8_avg_sse2;
  24. filter8_1dfunction vpx_filter_block1d4_v8_avg_sse2;
  25. filter8_1dfunction vpx_filter_block1d4_h8_avg_sse2;
  26. filter8_1dfunction vpx_filter_block1d16_v2_sse2;
  27. filter8_1dfunction vpx_filter_block1d16_h2_sse2;
  28. filter8_1dfunction vpx_filter_block1d8_v2_sse2;
  29. filter8_1dfunction vpx_filter_block1d8_h2_sse2;
  30. filter8_1dfunction vpx_filter_block1d4_v2_sse2;
  31. filter8_1dfunction vpx_filter_block1d4_h2_sse2;
  32. filter8_1dfunction vpx_filter_block1d16_v2_avg_sse2;
  33. filter8_1dfunction vpx_filter_block1d16_h2_avg_sse2;
  34. filter8_1dfunction vpx_filter_block1d8_v2_avg_sse2;
  35. filter8_1dfunction vpx_filter_block1d8_h2_avg_sse2;
  36. filter8_1dfunction vpx_filter_block1d4_v2_avg_sse2;
  37. filter8_1dfunction vpx_filter_block1d4_h2_avg_sse2;
  38. // void vpx_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride,
  39. // uint8_t *dst, ptrdiff_t dst_stride,
  40. // const int16_t *filter_x, int x_step_q4,
  41. // const int16_t *filter_y, int y_step_q4,
  42. // int w, int h);
  43. // void vpx_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride,
  44. // uint8_t *dst, ptrdiff_t dst_stride,
  45. // const int16_t *filter_x, int x_step_q4,
  46. // const int16_t *filter_y, int y_step_q4,
  47. // int w, int h);
  48. // void vpx_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride,
  49. // uint8_t *dst, ptrdiff_t dst_stride,
  50. // const int16_t *filter_x, int x_step_q4,
  51. // const int16_t *filter_y, int y_step_q4,
  52. // int w, int h);
  53. // void vpx_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride,
  54. // uint8_t *dst, ptrdiff_t dst_stride,
  55. // const int16_t *filter_x, int x_step_q4,
  56. // const int16_t *filter_y, int y_step_q4,
  57. // int w, int h);
  58. FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
  59. FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
  60. FUN_CONV_1D(avg_horiz, x_step_q4, filter_x, h, src, avg_, sse2);
  61. FUN_CONV_1D(avg_vert, y_step_q4, filter_y, v, src - src_stride * 3, avg_, sse2);
  62. // void vpx_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride,
  63. // uint8_t *dst, ptrdiff_t dst_stride,
  64. // const int16_t *filter_x, int x_step_q4,
  65. // const int16_t *filter_y, int y_step_q4,
  66. // int w, int h);
  67. // void vpx_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride,
  68. // uint8_t *dst, ptrdiff_t dst_stride,
  69. // const int16_t *filter_x, int x_step_q4,
  70. // const int16_t *filter_y, int y_step_q4,
  71. // int w, int h);
  72. FUN_CONV_2D(, sse2);
  73. FUN_CONV_2D(avg_ , sse2);
  74. #if CONFIG_VP9_HIGHBITDEPTH && ARCH_X86_64
  75. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v8_sse2;
  76. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h8_sse2;
  77. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v8_sse2;
  78. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h8_sse2;
  79. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v8_sse2;
  80. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h8_sse2;
  81. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v8_avg_sse2;
  82. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h8_avg_sse2;
  83. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v8_avg_sse2;
  84. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h8_avg_sse2;
  85. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v8_avg_sse2;
  86. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h8_avg_sse2;
  87. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v2_sse2;
  88. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h2_sse2;
  89. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v2_sse2;
  90. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h2_sse2;
  91. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v2_sse2;
  92. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h2_sse2;
  93. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_v2_avg_sse2;
  94. highbd_filter8_1dfunction vpx_highbd_filter_block1d16_h2_avg_sse2;
  95. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_v2_avg_sse2;
  96. highbd_filter8_1dfunction vpx_highbd_filter_block1d8_h2_avg_sse2;
  97. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_v2_avg_sse2;
  98. highbd_filter8_1dfunction vpx_highbd_filter_block1d4_h2_avg_sse2;
  99. // void vpx_highbd_convolve8_horiz_sse2(const uint8_t *src,
  100. // ptrdiff_t src_stride,
  101. // uint8_t *dst,
  102. // ptrdiff_t dst_stride,
  103. // const int16_t *filter_x,
  104. // int x_step_q4,
  105. // const int16_t *filter_y,
  106. // int y_step_q4,
  107. // int w, int h, int bd);
  108. // void vpx_highbd_convolve8_vert_sse2(const uint8_t *src,
  109. // ptrdiff_t src_stride,
  110. // uint8_t *dst,
  111. // ptrdiff_t dst_stride,
  112. // const int16_t *filter_x,
  113. // int x_step_q4,
  114. // const int16_t *filter_y,
  115. // int y_step_q4,
  116. // int w, int h, int bd);
  117. // void vpx_highbd_convolve8_avg_horiz_sse2(const uint8_t *src,
  118. // ptrdiff_t src_stride,
  119. // uint8_t *dst,
  120. // ptrdiff_t dst_stride,
  121. // const int16_t *filter_x,
  122. // int x_step_q4,
  123. // const int16_t *filter_y,
  124. // int y_step_q4,
  125. // int w, int h, int bd);
  126. // void vpx_highbd_convolve8_avg_vert_sse2(const uint8_t *src,
  127. // ptrdiff_t src_stride,
  128. // uint8_t *dst,
  129. // ptrdiff_t dst_stride,
  130. // const int16_t *filter_x,
  131. // int x_step_q4,
  132. // const int16_t *filter_y,
  133. // int y_step_q4,
  134. // int w, int h, int bd);
  135. HIGH_FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
  136. HIGH_FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
  137. HIGH_FUN_CONV_1D(avg_horiz, x_step_q4, filter_x, h, src, avg_, sse2);
  138. HIGH_FUN_CONV_1D(avg_vert, y_step_q4, filter_y, v, src - src_stride * 3, avg_,
  139. sse2);
  140. // void vpx_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride,
  141. // uint8_t *dst, ptrdiff_t dst_stride,
  142. // const int16_t *filter_x, int x_step_q4,
  143. // const int16_t *filter_y, int y_step_q4,
  144. // int w, int h, int bd);
  145. // void vpx_highbd_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride,
  146. // uint8_t *dst, ptrdiff_t dst_stride,
  147. // const int16_t *filter_x, int x_step_q4,
  148. // const int16_t *filter_y, int y_step_q4,
  149. // int w, int h, int bd);
  150. HIGH_FUN_CONV_2D(, sse2);
  151. HIGH_FUN_CONV_2D(avg_ , sse2);
  152. #endif // CONFIG_VP9_HIGHBITDEPTH && ARCH_X86_64
  153. #endif // HAVE_SSE2