xref: /aosp_15_r20/external/libvpx/vpx_dsp/vpx_dsp.mk (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
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
11DSP_SRCS-yes += vpx_dsp.mk
12DSP_SRCS-yes += vpx_dsp_common.h
13
14DSP_SRCS-$(HAVE_MSA)    += mips/macros_msa.h
15
16DSP_SRCS-$(HAVE_AVX2)   += x86/bitdepth_conversion_avx2.h
17DSP_SRCS-$(HAVE_SSE2)   += x86/bitdepth_conversion_sse2.h
18# This file is included in libs.mk. Including it here would cause it to be
19# compiled into an object. Even as an empty file, this would create an
20# executable section on the stack.
21#DSP_SRCS-$(HAVE_SSE2)   += x86/bitdepth_conversion_sse2$(ASM)
22
23# bit reader
24DSP_SRCS-yes += prob.h
25DSP_SRCS-yes += prob.c
26
27ifeq ($(CONFIG_ENCODERS),yes)
28DSP_SRCS-yes += bitwriter.h
29DSP_SRCS-yes += bitwriter.c
30DSP_SRCS-yes += bitwriter_buffer.c
31DSP_SRCS-yes += bitwriter_buffer.h
32DSP_SRCS-yes += psnr.c
33DSP_SRCS-yes += psnr.h
34DSP_SRCS-yes += sse.c
35DSP_SRCS-$(CONFIG_INTERNAL_STATS) += ssim.c
36DSP_SRCS-$(CONFIG_INTERNAL_STATS) += ssim.h
37DSP_SRCS-$(CONFIG_INTERNAL_STATS) += psnrhvs.c
38DSP_SRCS-$(CONFIG_INTERNAL_STATS) += fastssim.c
39DSP_SRCS-$(HAVE_NEON) += arm/sse_neon.c
40DSP_SRCS-$(HAVE_NEON_DOTPROD) += arm/sse_neon_dotprod.c
41DSP_SRCS-$(HAVE_SSE4_1) += x86/sse_sse4.c
42DSP_SRCS-$(HAVE_AVX2) += x86/sse_avx2.c
43endif
44
45ifeq ($(CONFIG_DECODERS),yes)
46DSP_SRCS-yes += bitreader.h
47DSP_SRCS-yes += bitreader.c
48DSP_SRCS-yes += bitreader_buffer.c
49DSP_SRCS-yes += bitreader_buffer.h
50endif
51
52# intra predictions
53DSP_SRCS-yes += intrapred.c
54
55DSP_SRCS-$(HAVE_SSE2) += x86/intrapred_sse2.asm
56DSP_SRCS-$(HAVE_SSSE3) += x86/intrapred_ssse3.asm
57DSP_SRCS-$(HAVE_VSX) += ppc/intrapred_vsx.c
58
59ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
60DSP_SRCS-$(HAVE_SSE2) += x86/highbd_intrapred_sse2.asm
61DSP_SRCS-$(HAVE_SSE2) += x86/highbd_intrapred_intrin_sse2.c
62DSP_SRCS-$(HAVE_SSSE3) += x86/highbd_intrapred_intrin_ssse3.c
63DSP_SRCS-$(HAVE_NEON) += arm/highbd_intrapred_neon.c
64endif  # CONFIG_VP9_HIGHBITDEPTH
65
66ifneq ($(filter yes,$(CONFIG_POSTPROC) $(CONFIG_VP9_POSTPROC)),)
67DSP_SRCS-yes += add_noise.c
68DSP_SRCS-yes += deblock.c
69DSP_SRCS-yes += postproc.h
70DSP_SRCS-$(HAVE_MSA) += mips/add_noise_msa.c
71DSP_SRCS-$(HAVE_MSA) += mips/deblock_msa.c
72DSP_SRCS-$(HAVE_NEON) += arm/deblock_neon.c
73DSP_SRCS-$(HAVE_SSE2) += x86/add_noise_sse2.asm
74DSP_SRCS-$(HAVE_SSE2) += x86/deblock_sse2.asm
75DSP_SRCS-$(HAVE_SSE2) += x86/post_proc_sse2.c
76DSP_SRCS-$(HAVE_VSX) += ppc/deblock_vsx.c
77endif # CONFIG_POSTPROC
78
79DSP_SRCS-$(HAVE_NEON_ASM) += arm/intrapred_neon_asm$(ASM)
80DSP_SRCS-$(HAVE_NEON) += arm/intrapred_neon.c
81DSP_SRCS-$(HAVE_MSA) += mips/intrapred_msa.c
82DSP_SRCS-$(HAVE_LSX) += loongarch/intrapred_lsx.c
83DSP_SRCS-$(HAVE_DSPR2)  += mips/intrapred4_dspr2.c
84DSP_SRCS-$(HAVE_DSPR2)  += mips/intrapred8_dspr2.c
85DSP_SRCS-$(HAVE_DSPR2)  += mips/intrapred16_dspr2.c
86
87DSP_SRCS-$(HAVE_DSPR2)  += mips/common_dspr2.h
88DSP_SRCS-$(HAVE_DSPR2)  += mips/common_dspr2.c
89
90DSP_SRCS-yes += vpx_filter.h
91ifeq ($(CONFIG_VP9),yes)
92# interpolation filters
93DSP_SRCS-yes += vpx_convolve.c
94DSP_SRCS-yes += vpx_convolve.h
95
96DSP_SRCS-$(VPX_ARCH_X86)$(VPX_ARCH_X86_64) += x86/convolve.h
97
98DSP_SRCS-$(HAVE_SSE2) += x86/convolve_sse2.h
99DSP_SRCS-$(HAVE_SSSE3) += x86/convolve_ssse3.h
100DSP_SRCS-$(HAVE_AVX2) += x86/convolve_avx2.h
101DSP_SRCS-$(HAVE_SSE2)  += x86/vpx_subpixel_8t_sse2.asm
102DSP_SRCS-$(HAVE_SSE2)  += x86/vpx_subpixel_4t_intrin_sse2.c
103DSP_SRCS-$(HAVE_SSE2)  += x86/vpx_subpixel_bilinear_sse2.asm
104DSP_SRCS-$(HAVE_SSSE3) += x86/vpx_subpixel_8t_ssse3.asm
105DSP_SRCS-$(HAVE_SSSE3) += x86/vpx_subpixel_bilinear_ssse3.asm
106DSP_SRCS-$(HAVE_AVX2)  += x86/vpx_subpixel_8t_intrin_avx2.c
107DSP_SRCS-$(HAVE_SSSE3) += x86/vpx_subpixel_8t_intrin_ssse3.c
108ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
109DSP_SRCS-$(HAVE_SSE2)  += x86/vpx_high_subpixel_8t_sse2.asm
110DSP_SRCS-$(HAVE_SSE2)  += x86/vpx_high_subpixel_bilinear_sse2.asm
111DSP_SRCS-$(HAVE_AVX2)  += x86/highbd_convolve_avx2.c
112DSP_SRCS-$(HAVE_NEON)  += arm/highbd_vpx_convolve_copy_neon.c
113DSP_SRCS-$(HAVE_NEON)  += arm/highbd_vpx_convolve_avg_neon.c
114DSP_SRCS-$(HAVE_NEON)  += arm/highbd_vpx_convolve8_neon.c
115DSP_SRCS-$(HAVE_SVE)   += arm/highbd_vpx_convolve8_sve.c
116DSP_SRCS-$(HAVE_SVE2)  += arm/highbd_vpx_convolve8_sve2.c
117endif
118
119DSP_SRCS-$(HAVE_SSE2)  += x86/vpx_convolve_copy_sse2.asm
120DSP_SRCS-$(HAVE_NEON)  += arm/vpx_scaled_convolve8_neon.c
121
122ifeq ($(HAVE_NEON_ASM),yes)
123DSP_SRCS-yes += arm/vpx_convolve_copy_neon_asm$(ASM)
124DSP_SRCS-yes += arm/vpx_convolve8_horiz_filter_type2_neon$(ASM)
125DSP_SRCS-yes += arm/vpx_convolve8_vert_filter_type2_neon$(ASM)
126DSP_SRCS-yes += arm/vpx_convolve8_horiz_filter_type1_neon$(ASM)
127DSP_SRCS-yes += arm/vpx_convolve8_vert_filter_type1_neon$(ASM)
128DSP_SRCS-yes += arm/vpx_convolve8_avg_horiz_filter_type2_neon$(ASM)
129DSP_SRCS-yes += arm/vpx_convolve8_avg_vert_filter_type2_neon$(ASM)
130DSP_SRCS-yes += arm/vpx_convolve8_avg_horiz_filter_type1_neon$(ASM)
131DSP_SRCS-yes += arm/vpx_convolve8_avg_vert_filter_type1_neon$(ASM)
132DSP_SRCS-yes += arm/vpx_convolve_avg_neon_asm$(ASM)
133DSP_SRCS-yes += arm/vpx_convolve8_neon_asm.c
134DSP_SRCS-yes += arm/vpx_convolve8_neon_asm.h
135DSP_SRCS-yes += arm/vpx_convolve_neon.c
136else
137ifeq ($(HAVE_NEON),yes)
138DSP_SRCS-yes += arm/vpx_convolve_copy_neon.c
139DSP_SRCS-yes += arm/vpx_convolve8_neon.c
140DSP_SRCS-yes += arm/vpx_convolve_avg_neon.c
141DSP_SRCS-yes += arm/vpx_convolve_neon.c
142DSP_SRCS-$(HAVE_NEON_DOTPROD) += arm/vpx_convolve8_neon_dotprod.c
143DSP_SRCS-$(HAVE_NEON_I8MM) += arm/vpx_convolve8_neon_i8mm.c
144endif  # HAVE_NEON
145endif  # HAVE_NEON_ASM
146
147# common (msa)
148DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_avg_horiz_msa.c
149DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_avg_msa.c
150DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_avg_vert_msa.c
151DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_horiz_msa.c
152DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_msa.c
153DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve8_vert_msa.c
154DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve_avg_msa.c
155DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve_copy_msa.c
156DSP_SRCS-$(HAVE_MSA) += mips/vpx_convolve_msa.h
157DSP_SRCS-$(HAVE_MMI) += mips/vpx_convolve8_mmi.c
158
159# common (dspr2)
160DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve_common_dspr2.h
161DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve2_avg_dspr2.c
162DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve2_avg_horiz_dspr2.c
163DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve2_dspr2.c
164DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve2_horiz_dspr2.c
165DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve2_vert_dspr2.c
166DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve8_avg_dspr2.c
167DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve8_avg_horiz_dspr2.c
168DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve8_dspr2.c
169DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve8_horiz_dspr2.c
170DSP_SRCS-$(HAVE_DSPR2)  += mips/convolve8_vert_dspr2.c
171
172DSP_SRCS-$(HAVE_VSX)  += ppc/vpx_convolve_vsx.c
173
174# common (lsx)
175DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve8_avg_horiz_lsx.c
176DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve8_avg_vert_lsx.c
177DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve8_horiz_lsx.c
178DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve8_vert_lsx.c
179DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve8_lsx.c
180DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve8_avg_lsx.c
181DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve_avg_lsx.c
182DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve_copy_lsx.c
183DSP_SRCS-$(HAVE_LSX) += loongarch/vpx_convolve_lsx.h
184
185# loop filters
186DSP_SRCS-yes += loopfilter.c
187
188DSP_SRCS-$(HAVE_SSE2)  += x86/loopfilter_sse2.c
189DSP_SRCS-$(HAVE_AVX2)  += x86/loopfilter_avx2.c
190
191ifeq ($(HAVE_NEON_ASM),yes)
192DSP_SRCS-yes  += arm/loopfilter_16_neon$(ASM)
193DSP_SRCS-yes  += arm/loopfilter_8_neon$(ASM)
194DSP_SRCS-yes  += arm/loopfilter_4_neon$(ASM)
195else
196DSP_SRCS-$(HAVE_NEON)   += arm/loopfilter_neon.c
197endif  # HAVE_NEON_ASM
198
199DSP_SRCS-$(HAVE_MSA)    += mips/loopfilter_msa.h
200DSP_SRCS-$(HAVE_MSA)    += mips/loopfilter_16_msa.c
201DSP_SRCS-$(HAVE_MSA)    += mips/loopfilter_8_msa.c
202DSP_SRCS-$(HAVE_MSA)    += mips/loopfilter_4_msa.c
203DSP_SRCS-$(HAVE_DSPR2)  += mips/loopfilter_filters_dspr2.h
204DSP_SRCS-$(HAVE_DSPR2)  += mips/loopfilter_filters_dspr2.c
205DSP_SRCS-$(HAVE_DSPR2)  += mips/loopfilter_macros_dspr2.h
206DSP_SRCS-$(HAVE_DSPR2)  += mips/loopfilter_masks_dspr2.h
207DSP_SRCS-$(HAVE_DSPR2)  += mips/loopfilter_mb_dspr2.c
208DSP_SRCS-$(HAVE_DSPR2)  += mips/loopfilter_mb_horiz_dspr2.c
209DSP_SRCS-$(HAVE_DSPR2)  += mips/loopfilter_mb_vert_dspr2.c
210
211DSP_SRCS-$(HAVE_LSX)    += loongarch/loopfilter_lsx.h
212DSP_SRCS-$(HAVE_LSX)    += loongarch/loopfilter_16_lsx.c
213DSP_SRCS-$(HAVE_LSX)    += loongarch/loopfilter_8_lsx.c
214DSP_SRCS-$(HAVE_LSX)    += loongarch/loopfilter_4_lsx.c
215
216ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
217DSP_SRCS-$(HAVE_NEON)   += arm/highbd_loopfilter_neon.c
218DSP_SRCS-$(HAVE_SSE2)   += x86/highbd_loopfilter_sse2.c
219endif  # CONFIG_VP9_HIGHBITDEPTH
220endif # CONFIG_VP9
221
222DSP_SRCS-yes            += txfm_common.h
223DSP_SRCS-$(HAVE_SSE2)   += x86/txfm_common_sse2.h
224DSP_SRCS-$(HAVE_MSA)    += mips/txfm_macros_msa.h
225DSP_SRCS-$(HAVE_LSX)    += loongarch/txfm_macros_lsx.h
226# forward transform
227ifeq ($(CONFIG_VP9_ENCODER),yes)
228DSP_SRCS-yes            += fwd_txfm.c
229DSP_SRCS-yes            += fwd_txfm.h
230DSP_SRCS-$(HAVE_SSE2)   += x86/fwd_txfm_sse2.h
231DSP_SRCS-$(HAVE_SSE2)   += x86/fwd_txfm_sse2.c
232DSP_SRCS-$(HAVE_SSE2)   += x86/fwd_txfm_impl_sse2.h
233DSP_SRCS-$(HAVE_SSE2)   += x86/fwd_dct32x32_impl_sse2.h
234ifeq ($(VPX_ARCH_X86_64),yes)
235DSP_SRCS-$(HAVE_SSSE3)  += x86/fwd_txfm_ssse3_x86_64.asm
236endif
237DSP_SRCS-$(HAVE_AVX2)   += x86/fwd_dct32x32_impl_avx2.h
238DSP_SRCS-$(HAVE_NEON)   += arm/fdct4x4_neon.c
239DSP_SRCS-$(HAVE_NEON)   += arm/fdct8x8_neon.c
240DSP_SRCS-$(HAVE_NEON)   += arm/fdct16x16_neon.c
241DSP_SRCS-$(HAVE_NEON)   += arm/fdct32x32_neon.c
242DSP_SRCS-$(HAVE_NEON)   += arm/fdct_partial_neon.c
243DSP_SRCS-$(HAVE_MSA)    += mips/fwd_txfm_msa.h
244DSP_SRCS-$(HAVE_MSA)    += mips/fwd_txfm_msa.c
245DSP_SRCS-$(HAVE_LSX)    += loongarch/fwd_txfm_lsx.h
246DSP_SRCS-$(HAVE_LSX)    += loongarch/fwd_txfm_lsx.c
247
248ifneq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
249DSP_SRCS-$(HAVE_AVX2)   += x86/fwd_txfm_avx2.c
250DSP_SRCS-$(HAVE_MSA)    += mips/fwd_dct32x32_msa.c
251DSP_SRCS-$(HAVE_LSX)    += loongarch/fwd_dct32x32_lsx.c
252endif  # !CONFIG_VP9_HIGHBITDEPTH
253
254DSP_SRCS-$(HAVE_VSX)    += ppc/fdct32x32_vsx.c
255endif  # CONFIG_VP9_ENCODER
256
257# inverse transform
258ifeq ($(CONFIG_VP9),yes)
259DSP_SRCS-yes            += inv_txfm.h
260DSP_SRCS-yes            += inv_txfm.c
261DSP_SRCS-$(HAVE_SSE2)   += x86/inv_txfm_sse2.h
262DSP_SRCS-$(HAVE_SSE2)   += x86/inv_txfm_sse2.c
263DSP_SRCS-$(HAVE_AVX2)   += x86/inv_txfm_avx2.c
264DSP_SRCS-$(HAVE_SSE2)   += x86/inv_wht_sse2.asm
265DSP_SRCS-$(HAVE_SSSE3)  += x86/inv_txfm_ssse3.h
266DSP_SRCS-$(HAVE_SSSE3)  += x86/inv_txfm_ssse3.c
267
268DSP_SRCS-$(HAVE_NEON_ASM) += arm/save_reg_neon$(ASM)
269
270DSP_SRCS-$(HAVE_VSX) += ppc/inv_txfm_vsx.c
271
272ifneq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
273DSP_SRCS-$(HAVE_MSA)   += mips/inv_txfm_msa.h
274DSP_SRCS-$(HAVE_MSA)   += mips/idct4x4_msa.c
275DSP_SRCS-$(HAVE_MSA)   += mips/idct8x8_msa.c
276DSP_SRCS-$(HAVE_MSA)   += mips/idct16x16_msa.c
277DSP_SRCS-$(HAVE_MSA)   += mips/idct32x32_msa.c
278
279DSP_SRCS-$(HAVE_DSPR2) += mips/inv_txfm_dspr2.h
280DSP_SRCS-$(HAVE_DSPR2) += mips/itrans4_dspr2.c
281DSP_SRCS-$(HAVE_DSPR2) += mips/itrans8_dspr2.c
282DSP_SRCS-$(HAVE_DSPR2) += mips/itrans16_dspr2.c
283DSP_SRCS-$(HAVE_DSPR2) += mips/itrans32_dspr2.c
284DSP_SRCS-$(HAVE_DSPR2) += mips/itrans32_cols_dspr2.c
285
286DSP_SRCS-$(HAVE_LSX)   += loongarch/idct32x32_lsx.c
287else  # CONFIG_VP9_HIGHBITDEPTH
288DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct4x4_add_neon.c
289DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct8x8_add_neon.c
290DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct16x16_add_neon.c
291DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct32x32_add_neon.c
292DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct32x32_34_add_neon.c
293DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct32x32_135_add_neon.c
294DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct32x32_1024_add_neon.c
295DSP_SRCS-$(HAVE_NEON)  += arm/highbd_idct_neon.h
296DSP_SRCS-$(HAVE_SSE2)  += x86/highbd_inv_txfm_sse2.h
297DSP_SRCS-$(HAVE_SSE2)  += x86/highbd_idct4x4_add_sse2.c
298DSP_SRCS-$(HAVE_SSE2)  += x86/highbd_idct8x8_add_sse2.c
299DSP_SRCS-$(HAVE_SSE2)  += x86/highbd_idct16x16_add_sse2.c
300DSP_SRCS-$(HAVE_SSE2)  += x86/highbd_idct32x32_add_sse2.c
301DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_inv_txfm_sse4.h
302DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct4x4_add_sse4.c
303DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct8x8_add_sse4.c
304DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct16x16_add_sse4.c
305DSP_SRCS-$(HAVE_SSE4_1) += x86/highbd_idct32x32_add_sse4.c
306endif  # !CONFIG_VP9_HIGHBITDEPTH
307
308ifeq ($(HAVE_NEON_ASM),yes)
309DSP_SRCS-yes += arm/idct_neon$(ASM)
310DSP_SRCS-yes += arm/idct4x4_1_add_neon$(ASM)
311DSP_SRCS-yes += arm/idct4x4_add_neon$(ASM)
312else
313DSP_SRCS-$(HAVE_NEON) += arm/idct4x4_1_add_neon.c
314DSP_SRCS-$(HAVE_NEON) += arm/idct4x4_add_neon.c
315endif  # HAVE_NEON_ASM
316DSP_SRCS-$(HAVE_NEON) += arm/idct_neon.h
317DSP_SRCS-$(HAVE_NEON) += arm/idct8x8_1_add_neon.c
318DSP_SRCS-$(HAVE_NEON) += arm/idct8x8_add_neon.c
319DSP_SRCS-$(HAVE_NEON) += arm/idct16x16_1_add_neon.c
320DSP_SRCS-$(HAVE_NEON) += arm/idct16x16_add_neon.c
321DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_1_add_neon.c
322DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_34_add_neon.c
323DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_135_add_neon.c
324DSP_SRCS-$(HAVE_NEON) += arm/idct32x32_add_neon.c
325
326endif  # CONFIG_VP9
327
328# quantization
329ifeq ($(CONFIG_VP9_ENCODER),yes)
330DSP_SRCS-yes            += quantize.c
331DSP_SRCS-yes            += quantize.h
332
333DSP_SRCS-$(HAVE_SSE2)   += x86/quantize_sse2.c
334DSP_SRCS-$(HAVE_SSE2)   += x86/quantize_sse2.h
335DSP_SRCS-$(HAVE_SSSE3)  += x86/quantize_ssse3.c
336DSP_SRCS-$(HAVE_SSSE3)  += x86/quantize_ssse3.h
337DSP_SRCS-$(HAVE_AVX)    += x86/quantize_avx.c
338DSP_SRCS-$(HAVE_AVX2)   += x86/quantize_avx2.c
339DSP_SRCS-$(HAVE_NEON)   += arm/quantize_neon.c
340DSP_SRCS-$(HAVE_VSX)    += ppc/quantize_vsx.c
341DSP_SRCS-$(HAVE_LSX)    += loongarch/quantize_lsx.c
342ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
343DSP_SRCS-$(HAVE_SSE2)   += x86/highbd_quantize_intrin_sse2.c
344DSP_SRCS-$(HAVE_AVX2)   += x86/highbd_quantize_intrin_avx2.c
345DSP_SRCS-$(HAVE_NEON)   += arm/highbd_quantize_neon.c
346endif
347
348# avg
349DSP_SRCS-yes           += avg.c
350DSP_SRCS-$(HAVE_SSE2)  += x86/avg_intrin_sse2.c
351DSP_SRCS-$(HAVE_AVX2)  += x86/avg_intrin_avx2.c
352DSP_SRCS-$(HAVE_NEON)  += arm/avg_neon.c
353DSP_SRCS-$(HAVE_NEON)  += arm/hadamard_neon.c
354ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
355DSP_SRCS-$(HAVE_NEON)  += arm/highbd_hadamard_neon.c
356DSP_SRCS-$(HAVE_NEON)  += arm/highbd_avg_neon.c
357endif
358DSP_SRCS-$(HAVE_MSA)   += mips/avg_msa.c
359DSP_SRCS-$(HAVE_LSX)   += loongarch/avg_lsx.c
360ifeq ($(VPX_ARCH_X86_64),yes)
361DSP_SRCS-$(HAVE_SSSE3) += x86/avg_ssse3_x86_64.asm
362endif
363DSP_SRCS-$(HAVE_VSX)   += ppc/hadamard_vsx.c
364
365endif  # CONFIG_VP9_ENCODER
366
367# skin detection
368DSP_SRCS-yes            += skin_detection.h
369DSP_SRCS-yes            += skin_detection.c
370
371ifeq ($(CONFIG_ENCODERS),yes)
372DSP_SRCS-yes            += sad.c
373DSP_SRCS-yes            += subtract.c
374DSP_SRCS-yes            += sum_squares.c
375DSP_SRCS-$(HAVE_NEON)   += arm/sum_squares_neon.c
376DSP_SRCS-$(HAVE_SVE)    += arm/sum_squares_sve.c
377DSP_SRCS-$(HAVE_SSE2)   += x86/sum_squares_sse2.c
378DSP_SRCS-$(HAVE_MSA)    += mips/sum_squares_msa.c
379
380DSP_SRCS-$(HAVE_NEON)   += arm/sad4d_neon.c
381DSP_SRCS-$(HAVE_NEON_DOTPROD) += arm/sad4d_neon_dotprod.c
382DSP_SRCS-$(HAVE_NEON)   += arm/sad_neon.c
383DSP_SRCS-$(HAVE_NEON_DOTPROD) += arm/sad_neon_dotprod.c
384DSP_SRCS-$(HAVE_NEON)   += arm/subtract_neon.c
385
386DSP_SRCS-$(HAVE_MSA)    += mips/sad_msa.c
387DSP_SRCS-$(HAVE_MSA)    += mips/subtract_msa.c
388
389DSP_SRCS-$(HAVE_LSX)    += loongarch/sad_lsx.c
390
391DSP_SRCS-$(HAVE_MMI)    += mips/sad_mmi.c
392DSP_SRCS-$(HAVE_MMI)    += mips/subtract_mmi.c
393
394DSP_SRCS-$(HAVE_AVX2)   += x86/sad4d_avx2.c
395DSP_SRCS-$(HAVE_AVX2)   += x86/sad_avx2.c
396DSP_SRCS-$(HAVE_AVX2)   += x86/subtract_avx2.c
397DSP_SRCS-$(HAVE_AVX512) += x86/sad4d_avx512.c
398
399DSP_SRCS-$(HAVE_SSE2)   += x86/sad4d_sse2.asm
400DSP_SRCS-$(HAVE_SSE2)   += x86/sad_sse2.asm
401DSP_SRCS-$(HAVE_SSE2)   += x86/subtract_sse2.asm
402
403DSP_SRCS-$(HAVE_VSX) += ppc/sad_vsx.c
404DSP_SRCS-$(HAVE_VSX) += ppc/subtract_vsx.c
405
406DSP_SRCS-$(HAVE_LSX)    += loongarch/subtract_lsx.c
407
408ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
409DSP_SRCS-$(HAVE_SSE2) += x86/highbd_sad4d_sse2.asm
410DSP_SRCS-$(HAVE_SSE2) += x86/highbd_sad_sse2.asm
411DSP_SRCS-$(HAVE_NEON) += arm/highbd_sad4d_neon.c
412DSP_SRCS-$(HAVE_NEON) += arm/highbd_sad_neon.c
413DSP_SRCS-$(HAVE_AVX2) += x86/highbd_sad4d_avx2.c
414DSP_SRCS-$(HAVE_AVX2) += x86/highbd_sad_avx2.c
415endif  # CONFIG_VP9_HIGHBITDEPTH
416
417endif  # CONFIG_ENCODERS
418
419ifneq ($(filter yes,$(CONFIG_ENCODERS) $(CONFIG_POSTPROC) $(CONFIG_VP9_POSTPROC)),)
420DSP_SRCS-yes            += variance.c
421DSP_SRCS-yes            += variance.h
422
423DSP_SRCS-$(HAVE_NEON)   += arm/avg_pred_neon.c
424DSP_SRCS-$(HAVE_NEON)   += arm/subpel_variance_neon.c
425DSP_SRCS-$(HAVE_NEON)   += arm/variance_neon.c
426DSP_SRCS-$(HAVE_NEON_DOTPROD)   += arm/variance_neon_dotprod.c
427
428DSP_SRCS-$(HAVE_MSA)    += mips/variance_msa.c
429DSP_SRCS-$(HAVE_MSA)    += mips/sub_pixel_variance_msa.c
430
431DSP_SRCS-$(HAVE_LSX)    += loongarch/variance_lsx.h
432DSP_SRCS-$(HAVE_LSX)    += loongarch/variance_lsx.c
433DSP_SRCS-$(HAVE_LSX)    += loongarch/sub_pixel_variance_lsx.c
434DSP_SRCS-$(HAVE_LSX)    += loongarch/avg_pred_lsx.c
435
436DSP_SRCS-$(HAVE_MMI)    += mips/variance_mmi.c
437
438DSP_SRCS-$(HAVE_SSE2)   += x86/avg_pred_sse2.c
439DSP_SRCS-$(HAVE_AVX2)   += x86/avg_pred_avx2.c
440DSP_SRCS-$(HAVE_SSE2)   += x86/variance_sse2.c  # Contains SSE2 and SSSE3
441DSP_SRCS-$(HAVE_AVX2)   += x86/variance_avx2.c
442DSP_SRCS-$(HAVE_VSX)    += ppc/variance_vsx.c
443
444ifeq ($(VPX_ARCH_X86_64),yes)
445DSP_SRCS-$(HAVE_SSE2)   += x86/ssim_opt_x86_64.asm
446endif  # VPX_ARCH_X86_64
447
448DSP_SRCS-$(HAVE_SSE2)   += x86/subpel_variance_sse2.asm  # Contains SSE2 and SSSE3
449
450ifeq ($(CONFIG_VP9_HIGHBITDEPTH),yes)
451DSP_SRCS-$(HAVE_SSE2)   += x86/highbd_variance_sse2.c
452DSP_SRCS-$(HAVE_SSE2)   += x86/highbd_variance_impl_sse2.asm
453DSP_SRCS-$(HAVE_SSE2)   += x86/highbd_subpel_variance_impl_sse2.asm
454DSP_SRCS-$(HAVE_NEON)   += arm/highbd_avg_pred_neon.c
455DSP_SRCS-$(HAVE_NEON)   += arm/highbd_sse_neon.c
456DSP_SRCS-$(HAVE_NEON)   += arm/highbd_variance_neon.c
457DSP_SRCS-$(HAVE_NEON_DOTPROD)   += arm/highbd_variance_neon_dotprod.c
458DSP_SRCS-$(HAVE_SVE)    += arm/highbd_variance_sve.c
459DSP_SRCS-$(HAVE_NEON)   += arm/highbd_subpel_variance_neon.c
460endif  # CONFIG_VP9_HIGHBITDEPTH
461endif  # CONFIG_ENCODERS || CONFIG_POSTPROC || CONFIG_VP9_POSTPROC
462
463# Neon utilities
464DSP_SRCS-$(HAVE_NEON) += arm/mem_neon.h
465DSP_SRCS-$(HAVE_NEON) += arm/sum_neon.h
466DSP_SRCS-$(HAVE_NEON) += arm/transpose_neon.h
467DSP_SRCS-$(HAVE_NEON) += arm/vpx_convolve8_neon.h
468
469# PPC VSX utilities
470DSP_SRCS-$(HAVE_VSX)  += ppc/types_vsx.h
471DSP_SRCS-$(HAVE_VSX)  += ppc/txfm_common_vsx.h
472DSP_SRCS-$(HAVE_VSX)  += ppc/transpose_vsx.h
473DSP_SRCS-$(HAVE_VSX)  += ppc/bitdepth_conversion_vsx.h
474
475# X86 utilities
476DSP_SRCS-$(HAVE_SSE2) += x86/mem_sse2.h
477DSP_SRCS-$(HAVE_SSE2) += x86/transpose_sse2.h
478
479# LSX utilities
480DSP_SRCS-$(HAVE_LSX)  += loongarch/bitdepth_conversion_lsx.h
481
482DSP_SRCS-no += $(DSP_SRCS_REMOVE-yes)
483
484DSP_SRCS-yes += vpx_dsp_rtcd.c
485DSP_SRCS-yes += vpx_dsp_rtcd_defs.pl
486
487$(eval $(call rtcd_h_template,vpx_dsp_rtcd,vpx_dsp/vpx_dsp_rtcd_defs.pl))
488