vpx_dsp.mk 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. ##
  2. ## Copyright (c) 2015 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. DSP_SRCS-yes += vpx_dsp.mk
  11. DSP_SRCS-yes += vpx_dsp_common.h
  12. DSP_SRCS-$(HAVE_MSA) += mips/macros_msa.h
  13. DSP_SRCS-$(HAVE_AVX2) += x86/bitdepth_conversion_avx2.h
  14. DSP_SRCS-$(HAVE_SSE2) += x86/bitdepth_conversion_sse2.h
  15. # This file is included in libs.mk. Including it here would cause it to be
  16. # compiled into an object. Even as an empty file, this would create an
  17. # executable section on the stack.
  18. #DSP_SRCS-$(HAVE_SSE2) += x86/bitdepth_conversion_sse2$(ASM)
  19. # bit reader
  20. DSP_SRCS-yes += prob.h
  21. DSP_SRCS-yes += prob.c
  22. ifeq ($(CONFIG_ENCODERS),yes)
  23. DSP_SRCS-yes += bitwriter.h
  24. DSP_SRCS-yes += bitwriter.c
  25. DSP_SRCS-yes += bitwriter_buffer.c
  26. DSP_SRCS-yes += bitwriter_buffer.h
  27. DSP_SRCS-yes += psnr.c
  28. DSP_SRCS-yes += psnr.h
  29. DSP_SRCS-$(CONFIG_INTERNAL_STATS) += ssim.c
  30. DSP_SRCS-$(CONFIG_INTERNAL_STATS) += ssim.h
  31. DSP_SRCS-$(CONFIG_INTERNAL_STATS) += psnrhvs.c
  32. DSP_SRCS-$(CONFIG_INTERNAL_STATS) += fastssim.c
  33. endif
  34. ifeq ($(CONFIG_DECODERS),yes)
  35. DSP_SRCS-yes += bitreader.h
  36. DSP_SRCS-yes += bitreader.c
  37. DSP_SRCS-yes += bitreader_buffer.c
  38. DSP_SRCS-yes += bitreader_buffer.h
  39. endif
  40. # intra predictions
  41. DSP_SRCS-yes += intrapred.c
  42. DSP_SRCS-$(HAVE_SSE2) += x86/intrapred_sse2.asm
  43. DSP_SRCS-$(HAVE_SSSE3) += x86/intrapred_ssse3.asm
  44. DSP_SRCS-$(HAVE_VSX) += ppc/intrapred_vsx.c
  45. ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  46. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_intrapred_sse2.asm
  47. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_intrapred_intrin_sse2.c
  48. DSP_SRCS-$(HAVE_SSSE3) += x86/highbd_intrapred_intrin_ssse3.c
  49. DSP_SRCS-$(HAVE_NEON) += arm/highbd_intrapred_neon.c
  50. endif # CONFIG_VP9_HIGHBITDEPTH
  51. ifneq ($(filter yes,$(CONFIG_POSTPROC) $(CONFIG_VP9_POSTPROC)),)
  52. DSP_SRCS-yes += add_noise.c
  53. DSP_SRCS-yes += deblock.c
  54. DSP_SRCS-yes += postproc.h
  55. DSP_SRCS-$(HAVE_MSA) += mips/add_noise_msa.c
  56. DSP_SRCS-$(HAVE_MSA) += mips/deblock_msa.c
  57. DSP_SRCS-$(HAVE_NEON) += arm/deblock_neon.c
  58. DSP_SRCS-$(HAVE_SSE2) += x86/add_noise_sse2.asm
  59. DSP_SRCS-$(HAVE_SSE2) += x86/deblock_sse2.asm
  60. DSP_SRCS-$(HAVE_SSE2) += x86/post_proc_sse2.c
  61. DSP_SRCS-$(HAVE_VSX) += ppc/deblock_vsx.c
  62. endif # CONFIG_POSTPROC
  63. DSP_SRCS-$(HAVE_NEON_ASM) += arm/intrapred_neon_asm$(ASM)
  64. DSP_SRCS-$(HAVE_NEON) += arm/intrapred_neon.c
  65. DSP_SRCS-$(HAVE_MSA) += mips/intrapred_msa.c
  66. DSP_SRCS-$(HAVE_DSPR2) += mips/intrapred4_dspr2.c
  67. DSP_SRCS-$(HAVE_DSPR2) += mips/intrapred8_dspr2.c
  68. DSP_SRCS-$(HAVE_DSPR2) += mips/intrapred16_dspr2.c
  69. DSP_SRCS-$(HAVE_DSPR2) += mips/common_dspr2.h
  70. DSP_SRCS-$(HAVE_DSPR2) += mips/common_dspr2.c
  71. DSP_SRCS-yes += vpx_filter.h
  72. ifeq ($(CONFIG_VP9),yes)
  73. # interpolation filters
  74. DSP_SRCS-yes += vpx_convolve.c
  75. DSP_SRCS-yes += vpx_convolve.h
  76. DSP_SRCS-$(ARCH_X86)$(ARCH_X86_64) += x86/convolve.h
  77. DSP_SRCS-$(HAVE_SSE2) += x86/convolve_sse2.h
  78. DSP_SRCS-$(HAVE_SSSE3) += x86/convolve_ssse3.h
  79. DSP_SRCS-$(HAVE_AVX2) += x86/convolve_avx2.h
  80. DSP_SRCS-$(HAVE_SSE2) += x86/vpx_subpixel_8t_sse2.asm
  81. DSP_SRCS-$(HAVE_SSE2) += x86/vpx_subpixel_4t_intrin_sse2.c
  82. DSP_SRCS-$(HAVE_SSE2) += x86/vpx_subpixel_bilinear_sse2.asm
  83. DSP_SRCS-$(HAVE_SSSE3) += x86/vpx_subpixel_8t_ssse3.asm
  84. DSP_SRCS-$(HAVE_SSSE3) += x86/vpx_subpixel_bilinear_ssse3.asm
  85. DSP_SRCS-$(HAVE_AVX2) += x86/vpx_subpixel_8t_intrin_avx2.c
  86. DSP_SRCS-$(HAVE_SSSE3) += x86/vpx_subpixel_8t_intrin_ssse3.c
  87. ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  88. DSP_SRCS-$(HAVE_SSE2) += x86/vpx_high_subpixel_8t_sse2.asm
  89. DSP_SRCS-$(HAVE_SSE2) += x86/vpx_high_subpixel_bilinear_sse2.asm
  90. DSP_SRCS-$(HAVE_AVX2) += x86/highbd_convolve_avx2.c
  91. DSP_SRCS-$(HAVE_NEON) += arm/highbd_vpx_convolve_copy_neon.c
  92. DSP_SRCS-$(HAVE_NEON) += arm/highbd_vpx_convolve_avg_neon.c
  93. DSP_SRCS-$(HAVE_NEON) += arm/highbd_vpx_convolve8_neon.c
  94. DSP_SRCS-$(HAVE_NEON) += arm/highbd_vpx_convolve_neon.c
  95. endif
  96. DSP_SRCS-$(HAVE_SSE2) += x86/vpx_convolve_copy_sse2.asm
  97. DSP_SRCS-$(HAVE_NEON) += arm/vpx_scaled_convolve8_neon.c
  98. ifeq ($(HAVE_NEON_ASM),yes)
  99. DSP_SRCS-yes += arm/vpx_convolve_copy_neon_asm$(ASM)
  100. DSP_SRCS-yes += arm/vpx_convolve8_horiz_filter_type2_neon$(ASM)
  101. DSP_SRCS-yes += arm/vpx_convolve8_vert_filter_type2_neon$(ASM)
  102. DSP_SRCS-yes += arm/vpx_convolve8_horiz_filter_type1_neon$(ASM)
  103. DSP_SRCS-yes += arm/vpx_convolve8_vert_filter_type1_neon$(ASM)
  104. DSP_SRCS-yes += arm/vpx_convolve8_avg_horiz_filter_type2_neon$(ASM)
  105. DSP_SRCS-yes += arm/vpx_convolve8_avg_vert_filter_type2_neon$(ASM)
  106. DSP_SRCS-yes += arm/vpx_convolve8_avg_horiz_filter_type1_neon$(ASM)
  107. DSP_SRCS-yes += arm/vpx_convolve8_avg_vert_filter_type1_neon$(ASM)
  108. DSP_SRCS-yes += arm/vpx_convolve_avg_neon_asm$(ASM)
  109. DSP_SRCS-yes += arm/vpx_convolve8_neon_asm.c
  110. DSP_SRCS-yes += arm/vpx_convolve8_neon_asm.h
  111. DSP_SRCS-yes += arm/vpx_convolve_neon.c
  112. else
  113. ifeq ($(HAVE_NEON),yes)
  114. DSP_SRCS-yes += arm/vpx_convolve_copy_neon.c
  115. DSP_SRCS-yes += arm/vpx_convolve8_neon.c
  116. DSP_SRCS-yes += arm/vpx_convolve_avg_neon.c
  117. DSP_SRCS-yes += arm/vpx_convolve_neon.c
  118. endif # HAVE_NEON
  119. endif # HAVE_NEON_ASM
  120. # common (msa)
  121. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_avg_horiz_msa.c
  122. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_avg_msa.c
  123. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_avg_vert_msa.c
  124. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_horiz_msa.c
  125. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_msa.c
  126. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_vert_msa.c
  127. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve_avg_msa.c
  128. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve_copy_msa.c
  129. DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve_msa.h
  130. DSP_SRCS-$(HAVE_MMI) += mips/vpx_convolve8_mmi.c
  131. # common (dspr2)
  132. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve_common_dspr2.h
  133. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve2_avg_dspr2.c
  134. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve2_avg_horiz_dspr2.c
  135. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve2_dspr2.c
  136. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve2_horiz_dspr2.c
  137. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve2_vert_dspr2.c
  138. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve8_avg_dspr2.c
  139. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve8_avg_horiz_dspr2.c
  140. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve8_dspr2.c
  141. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve8_horiz_dspr2.c
  142. DSP_SRCS-$(HAVE_DSPR2) += mips/convolve8_vert_dspr2.c
  143. DSP_SRCS-$(HAVE_VSX) += ppc/vpx_convolve_vsx.c
  144. # loop filters
  145. DSP_SRCS-yes += loopfilter.c
  146. DSP_SRCS-$(HAVE_SSE2) += x86/loopfilter_sse2.c
  147. DSP_SRCS-$(HAVE_AVX2) += x86/loopfilter_avx2.c
  148. ifeq ($(HAVE_NEON_ASM),yes)
  149. DSP_SRCS-yes += arm/loopfilter_16_neon$(ASM)
  150. DSP_SRCS-yes += arm/loopfilter_8_neon$(ASM)
  151. DSP_SRCS-yes += arm/loopfilter_4_neon$(ASM)
  152. else
  153. DSP_SRCS-$(HAVE_NEON) += arm/loopfilter_neon.c
  154. endif # HAVE_NEON_ASM
  155. DSP_SRCS-$(HAVE_MSA) += mips/loopfilter_msa.h
  156. DSP_SRCS-$(HAVE_MSA) += mips/loopfilter_16_msa.c
  157. DSP_SRCS-$(HAVE_MSA) += mips/loopfilter_8_msa.c
  158. DSP_SRCS-$(HAVE_MSA) += mips/loopfilter_4_msa.c
  159. DSP_SRCS-$(HAVE_DSPR2) += mips/loopfilter_filters_dspr2.h
  160. DSP_SRCS-$(HAVE_DSPR2) += mips/loopfilter_filters_dspr2.c
  161. DSP_SRCS-$(HAVE_DSPR2) += mips/loopfilter_macros_dspr2.h
  162. DSP_SRCS-$(HAVE_DSPR2) += mips/loopfilter_masks_dspr2.h
  163. DSP_SRCS-$(HAVE_DSPR2) += mips/loopfilter_mb_dspr2.c
  164. DSP_SRCS-$(HAVE_DSPR2) += mips/loopfilter_mb_horiz_dspr2.c
  165. DSP_SRCS-$(HAVE_DSPR2) += mips/loopfilter_mb_vert_dspr2.c
  166. ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  167. DSP_SRCS-$(HAVE_NEON) += arm/highbd_loopfilter_neon.c
  168. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_loopfilter_sse2.c
  169. endif # CONFIG_VP9_HIGHBITDEPTH
  170. endif # CONFIG_VP9
  171. DSP_SRCS-yes += txfm_common.h
  172. DSP_SRCS-$(HAVE_SSE2) += x86/txfm_common_sse2.h
  173. DSP_SRCS-$(HAVE_MSA) += mips/txfm_macros_msa.h
  174. # forward transform
  175. ifeq ($(CONFIG_VP9_ENCODER),yes)
  176. DSP_SRCS-yes += fwd_txfm.c
  177. DSP_SRCS-yes += fwd_txfm.h
  178. DSP_SRCS-$(HAVE_SSE2) += x86/fwd_txfm_sse2.h
  179. DSP_SRCS-$(HAVE_SSE2) += x86/fwd_txfm_sse2.c
  180. DSP_SRCS-$(HAVE_SSE2) += x86/fwd_txfm_impl_sse2.h
  181. DSP_SRCS-$(HAVE_SSE2) += x86/fwd_dct32x32_impl_sse2.h
  182. ifeq ($(ARCH_X86_64),yes)
  183. DSP_SRCS-$(HAVE_SSSE3) += x86/fwd_txfm_ssse3_x86_64.asm
  184. endif
  185. DSP_SRCS-$(HAVE_AVX2) += x86/fwd_txfm_avx2.c
  186. DSP_SRCS-$(HAVE_AVX2) += x86/fwd_dct32x32_impl_avx2.h
  187. DSP_SRCS-$(HAVE_NEON) += arm/fdct_neon.c
  188. DSP_SRCS-$(HAVE_NEON) += arm/fdct16x16_neon.c
  189. DSP_SRCS-$(HAVE_NEON) += arm/fdct32x32_neon.c
  190. DSP_SRCS-$(HAVE_NEON) += arm/fdct_partial_neon.c
  191. DSP_SRCS-$(HAVE_NEON) += arm/fwd_txfm_neon.c
  192. DSP_SRCS-$(HAVE_MSA) += mips/fwd_txfm_msa.h
  193. DSP_SRCS-$(HAVE_MSA) += mips/fwd_txfm_msa.c
  194. ifneq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  195. DSP_SRCS-$(HAVE_MSA) += mips/fwd_dct32x32_msa.c
  196. endif # !CONFIG_VP9_HIGHBITDEPTH
  197. DSP_SRCS-$(HAVE_VSX) += ppc/fdct32x32_vsx.c
  198. endif # CONFIG_VP9_ENCODER
  199. # inverse transform
  200. ifeq ($(CONFIG_VP9),yes)
  201. DSP_SRCS-yes += inv_txfm.h
  202. DSP_SRCS-yes += inv_txfm.c
  203. DSP_SRCS-$(HAVE_SSE2) += x86/inv_txfm_sse2.h
  204. DSP_SRCS-$(HAVE_SSE2) += x86/inv_txfm_sse2.c
  205. DSP_SRCS-$(HAVE_SSE2) += x86/inv_wht_sse2.asm
  206. DSP_SRCS-$(HAVE_SSSE3) += x86/inv_txfm_ssse3.h
  207. DSP_SRCS-$(HAVE_SSSE3) += x86/inv_txfm_ssse3.c
  208. DSP_SRCS-$(HAVE_NEON_ASM) += arm/save_reg_neon$(ASM)
  209. DSP_SRCS-$(HAVE_VSX) += ppc/inv_txfm_vsx.c
  210. ifneq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  211. DSP_SRCS-$(HAVE_MSA) += mips/inv_txfm_msa.h
  212. DSP_SRCS-$(HAVE_MSA) += mips/idct4x4_msa.c
  213. DSP_SRCS-$(HAVE_MSA) += mips/idct8x8_msa.c
  214. DSP_SRCS-$(HAVE_MSA) += mips/idct16x16_msa.c
  215. DSP_SRCS-$(HAVE_MSA) += mips/idct32x32_msa.c
  216. DSP_SRCS-$(HAVE_DSPR2) += mips/inv_txfm_dspr2.h
  217. DSP_SRCS-$(HAVE_DSPR2) += mips/itrans4_dspr2.c
  218. DSP_SRCS-$(HAVE_DSPR2) += mips/itrans8_dspr2.c
  219. DSP_SRCS-$(HAVE_DSPR2) += mips/itrans16_dspr2.c
  220. DSP_SRCS-$(HAVE_DSPR2) += mips/itrans32_dspr2.c
  221. DSP_SRCS-$(HAVE_DSPR2) += mips/itrans32_cols_dspr2.c
  222. else # CONFIG_VP9_HIGHBITDEPTH
  223. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct4x4_add_neon.c
  224. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct8x8_add_neon.c
  225. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct16x16_add_neon.c
  226. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct32x32_add_neon.c
  227. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct32x32_34_add_neon.c
  228. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct32x32_135_add_neon.c
  229. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct32x32_1024_add_neon.c
  230. DSP_SRCS-$(HAVE_NEON) += arm/highbd_idct_neon.h
  231. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_inv_txfm_sse2.h
  232. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_idct4x4_add_sse2.c
  233. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_idct8x8_add_sse2.c
  234. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_idct16x16_add_sse2.c
  235. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_idct32x32_add_sse2.c
  236. DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_inv_txfm_sse4.h
  237. DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct4x4_add_sse4.c
  238. DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct8x8_add_sse4.c
  239. DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct16x16_add_sse4.c
  240. DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct32x32_add_sse4.c
  241. endif # !CONFIG_VP9_HIGHBITDEPTH
  242. ifeq ($(HAVE_NEON_ASM),yes)
  243. DSP_SRCS-yes += arm/idct_neon$(ASM)
  244. DSP_SRCS-yes += arm/idct4x4_1_add_neon$(ASM)
  245. DSP_SRCS-yes += arm/idct4x4_add_neon$(ASM)
  246. else
  247. DSP_SRCS-$(HAVE_NEON) += arm/idct4x4_1_add_neon.c
  248. DSP_SRCS-$(HAVE_NEON) += arm/idct4x4_add_neon.c
  249. endif # HAVE_NEON_ASM
  250. DSP_SRCS-$(HAVE_NEON) += arm/idct_neon.h
  251. DSP_SRCS-$(HAVE_NEON) += arm/idct8x8_1_add_neon.c
  252. DSP_SRCS-$(HAVE_NEON) += arm/idct8x8_add_neon.c
  253. DSP_SRCS-$(HAVE_NEON) += arm/idct16x16_1_add_neon.c
  254. DSP_SRCS-$(HAVE_NEON) += arm/idct16x16_add_neon.c
  255. DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_1_add_neon.c
  256. DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_34_add_neon.c
  257. DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_135_add_neon.c
  258. DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_add_neon.c
  259. endif # CONFIG_VP9
  260. # quantization
  261. ifeq ($(CONFIG_VP9_ENCODER),yes)
  262. DSP_SRCS-yes += quantize.c
  263. DSP_SRCS-yes += quantize.h
  264. DSP_SRCS-$(HAVE_SSE2) += x86/quantize_sse2.c
  265. DSP_SRCS-$(HAVE_SSE2) += x86/quantize_sse2.h
  266. DSP_SRCS-$(HAVE_SSSE3) += x86/quantize_ssse3.c
  267. DSP_SRCS-$(HAVE_SSSE3) += x86/quantize_ssse3.h
  268. DSP_SRCS-$(HAVE_AVX) += x86/quantize_avx.c
  269. DSP_SRCS-$(HAVE_NEON) += arm/quantize_neon.c
  270. DSP_SRCS-$(HAVE_VSX) += ppc/quantize_vsx.c
  271. ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  272. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_quantize_intrin_sse2.c
  273. endif
  274. # avg
  275. DSP_SRCS-yes += avg.c
  276. DSP_SRCS-$(HAVE_SSE2) += x86/avg_intrin_sse2.c
  277. DSP_SRCS-$(HAVE_AVX2) += x86/avg_intrin_avx2.c
  278. DSP_SRCS-$(HAVE_NEON) += arm/avg_neon.c
  279. DSP_SRCS-$(HAVE_NEON) += arm/hadamard_neon.c
  280. DSP_SRCS-$(HAVE_MSA) += mips/avg_msa.c
  281. ifeq ($(ARCH_X86_64),yes)
  282. DSP_SRCS-$(HAVE_SSSE3) += x86/avg_ssse3_x86_64.asm
  283. endif
  284. DSP_SRCS-$(HAVE_VSX) += ppc/hadamard_vsx.c
  285. endif # CONFIG_VP9_ENCODER
  286. # skin detection
  287. DSP_SRCS-yes += skin_detection.h
  288. DSP_SRCS-yes += skin_detection.c
  289. ifeq ($(CONFIG_ENCODERS),yes)
  290. DSP_SRCS-yes += sad.c
  291. DSP_SRCS-yes += subtract.c
  292. DSP_SRCS-yes += sum_squares.c
  293. DSP_SRCS-$(HAVE_NEON) += arm/sum_squares_neon.c
  294. DSP_SRCS-$(HAVE_SSE2) += x86/sum_squares_sse2.c
  295. DSP_SRCS-$(HAVE_MSA) += mips/sum_squares_msa.c
  296. DSP_SRCS-$(HAVE_NEON) += arm/sad4d_neon.c
  297. DSP_SRCS-$(HAVE_NEON) += arm/sad_neon.c
  298. DSP_SRCS-$(HAVE_NEON) += arm/subtract_neon.c
  299. DSP_SRCS-$(HAVE_MSA) += mips/sad_msa.c
  300. DSP_SRCS-$(HAVE_MSA) += mips/subtract_msa.c
  301. DSP_SRCS-$(HAVE_MMI) += mips/sad_mmi.c
  302. DSP_SRCS-$(HAVE_MMI) += mips/subtract_mmi.c
  303. DSP_SRCS-$(HAVE_SSE3) += x86/sad_sse3.asm
  304. DSP_SRCS-$(HAVE_SSSE3) += x86/sad_ssse3.asm
  305. DSP_SRCS-$(HAVE_SSE4_1) += x86/sad_sse4.asm
  306. DSP_SRCS-$(HAVE_AVX2) += x86/sad4d_avx2.c
  307. DSP_SRCS-$(HAVE_AVX2) += x86/sad_avx2.c
  308. DSP_SRCS-$(HAVE_AVX512) += x86/sad4d_avx512.c
  309. DSP_SRCS-$(HAVE_SSE2) += x86/sad4d_sse2.asm
  310. DSP_SRCS-$(HAVE_SSE2) += x86/sad_sse2.asm
  311. DSP_SRCS-$(HAVE_SSE2) += x86/subtract_sse2.asm
  312. DSP_SRCS-$(HAVE_VSX) += ppc/sad_vsx.c
  313. DSP_SRCS-$(HAVE_VSX) += ppc/subtract_vsx.c
  314. ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  315. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_sad4d_sse2.asm
  316. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_sad_sse2.asm
  317. endif # CONFIG_VP9_HIGHBITDEPTH
  318. endif # CONFIG_ENCODERS
  319. ifneq ($(filter yes,$(CONFIG_ENCODERS) $(CONFIG_POSTPROC) $(CONFIG_VP9_POSTPROC)),)
  320. DSP_SRCS-yes += variance.c
  321. DSP_SRCS-yes += variance.h
  322. DSP_SRCS-$(HAVE_NEON) += arm/avg_pred_neon.c
  323. DSP_SRCS-$(HAVE_NEON) += arm/subpel_variance_neon.c
  324. DSP_SRCS-$(HAVE_NEON) += arm/variance_neon.c
  325. DSP_SRCS-$(HAVE_MSA) += mips/variance_msa.c
  326. DSP_SRCS-$(HAVE_MSA) += mips/sub_pixel_variance_msa.c
  327. DSP_SRCS-$(HAVE_MMI) += mips/variance_mmi.c
  328. DSP_SRCS-$(HAVE_SSE2) += x86/avg_pred_sse2.c
  329. DSP_SRCS-$(HAVE_SSE2) += x86/variance_sse2.c # Contains SSE2 and SSSE3
  330. DSP_SRCS-$(HAVE_AVX2) += x86/variance_avx2.c
  331. DSP_SRCS-$(HAVE_VSX) += ppc/variance_vsx.c
  332. ifeq ($(ARCH_X86_64),yes)
  333. DSP_SRCS-$(HAVE_SSE2) += x86/ssim_opt_x86_64.asm
  334. endif # ARCH_X86_64
  335. DSP_SRCS-$(HAVE_SSE2) += x86/subpel_variance_sse2.asm # Contains SSE2 and SSSE3
  336. ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
  337. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_variance_sse2.c
  338. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_variance_impl_sse2.asm
  339. DSP_SRCS-$(HAVE_SSE2) += x86/highbd_subpel_variance_impl_sse2.asm
  340. endif # CONFIG_VP9_HIGHBITDEPTH
  341. endif # CONFIG_ENCODERS || CONFIG_POSTPROC || CONFIG_VP9_POSTPROC
  342. # Neon utilities
  343. DSP_SRCS-$(HAVE_NEON) += arm/mem_neon.h
  344. DSP_SRCS-$(HAVE_NEON) += arm/sum_neon.h
  345. DSP_SRCS-$(HAVE_NEON) += arm/transpose_neon.h
  346. DSP_SRCS-$(HAVE_NEON) += arm/vpx_convolve8_neon.h
  347. # PPC VSX utilities
  348. DSP_SRCS-$(HAVE_VSX) += ppc/types_vsx.h
  349. DSP_SRCS-$(HAVE_VSX) += ppc/txfm_common_vsx.h
  350. DSP_SRCS-$(HAVE_VSX) += ppc/transpose_vsx.h
  351. DSP_SRCS-$(HAVE_VSX) += ppc/bitdepth_conversion_vsx.h
  352. # X86 utilities
  353. DSP_SRCS-$(HAVE_SSE2) += x86/mem_sse2.h
  354. DSP_SRCS-$(HAVE_SSE2) += x86/transpose_sse2.h
  355. DSP_SRCS-no += $(DSP_SRCS_REMOVE-yes)
  356. DSP_SRCS-yes += vpx_dsp_rtcd.c
  357. DSP_SRCS-yes += vpx_dsp_rtcd_defs.pl
  358. $(eval $(call rtcd_h_template,vpx_dsp_rtcd,vpx_dsp/vpx_dsp_rtcd_defs.pl))