xref: /aosp_15_r20/external/libaom/aom_dsp/aom_dsp.cmake (revision 77c1e3ccc04c968bd2bc212e87364f250e820521)
1#
2# Copyright (c) 2017, Alliance for Open Media. All rights reserved.
3#
4# This source code is subject to the terms of the BSD 2 Clause License and the
5# Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License was
6# not distributed with this source code in the LICENSE file, you can obtain it
7# at www.aomedia.org/license/software. If the Alliance for Open Media Patent
8# License 1.0 was not distributed with this source code in the PATENTS file, you
9# can obtain it at www.aomedia.org/license/patent.
10#
11if(AOM_AOM_DSP_AOM_DSP_CMAKE_)
12  return()
13endif() # AOM_AOM_DSP_AOM_DSP_CMAKE_
14set(AOM_AOM_DSP_AOM_DSP_CMAKE_ 1)
15
16list(APPEND AOM_DSP_COMMON_SOURCES
17            "${AOM_ROOT}/aom_dsp/aom_convolve.c"
18            "${AOM_ROOT}/aom_dsp/aom_dsp_common.h"
19            "${AOM_ROOT}/aom_dsp/aom_filter.h"
20            "${AOM_ROOT}/aom_dsp/aom_simd.h"
21            "${AOM_ROOT}/aom_dsp/aom_simd_inline.h"
22            "${AOM_ROOT}/aom_dsp/bitreader_buffer.c"
23            "${AOM_ROOT}/aom_dsp/bitreader_buffer.h"
24            "${AOM_ROOT}/aom_dsp/bitwriter_buffer.c"
25            "${AOM_ROOT}/aom_dsp/bitwriter_buffer.h"
26            "${AOM_ROOT}/aom_dsp/blend.h"
27            "${AOM_ROOT}/aom_dsp/blend_a64_hmask.c"
28            "${AOM_ROOT}/aom_dsp/blend_a64_mask.c"
29            "${AOM_ROOT}/aom_dsp/blend_a64_vmask.c"
30            "${AOM_ROOT}/aom_dsp/entcode.c"
31            "${AOM_ROOT}/aom_dsp/entcode.h"
32            "${AOM_ROOT}/aom_dsp/grain_params.h"
33            "${AOM_ROOT}/aom_dsp/intrapred.c"
34            "${AOM_ROOT}/aom_dsp/intrapred_common.h"
35            "${AOM_ROOT}/aom_dsp/loopfilter.c"
36            "${AOM_ROOT}/aom_dsp/odintrin.c"
37            "${AOM_ROOT}/aom_dsp/odintrin.h"
38            "${AOM_ROOT}/aom_dsp/prob.h"
39            "${AOM_ROOT}/aom_dsp/recenter.h"
40            "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics.h"
41            "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics_c.h"
42            "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics.h"
43            "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics_c.h"
44            "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics.h"
45            "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics_c.h"
46            "${AOM_ROOT}/aom_dsp/txfm_common.h"
47            "${AOM_ROOT}/aom_dsp/x86/convolve_common_intrin.h")
48
49list(APPEND AOM_DSP_COMMON_ASM_SSE2
50            "${AOM_ROOT}/aom_dsp/x86/intrapred_asm_sse2.asm")
51if(CONFIG_AV1_HIGHBITDEPTH)
52  list(APPEND AOM_DSP_COMMON_ASM_SSE2
53              "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm"
54              "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm"
55              "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_asm_sse2.asm")
56endif()
57
58list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
59            "${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_sse2.c"
60            "${AOM_ROOT}/aom_dsp/x86/convolve.h"
61            "${AOM_ROOT}/aom_dsp/x86/convolve_sse2.h"
62            "${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.c"
63            "${AOM_ROOT}/aom_dsp/x86/intrapred_x86.h"
64            "${AOM_ROOT}/aom_dsp/x86/loopfilter_sse2.c"
65            "${AOM_ROOT}/aom_dsp/x86/lpf_common_sse2.h"
66            "${AOM_ROOT}/aom_dsp/x86/mem_sse2.h"
67            "${AOM_ROOT}/aom_dsp/x86/transpose_sse2.h"
68            "${AOM_ROOT}/aom_dsp/x86/txfm_common_sse2.h"
69            "${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.h"
70            "${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_sse2.h")
71
72list(APPEND AOM_DSP_COMMON_ASM_SSSE3
73            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
74            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm")
75
76list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
77            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c"
78            "${AOM_ROOT}/aom_dsp/x86/convolve_ssse3.h"
79            "${AOM_ROOT}/aom_dsp/x86/intrapred_ssse3.c")
80
81list(APPEND AOM_DSP_COMMON_INTRIN_SSE4_1
82            "${AOM_ROOT}/aom_dsp/x86/blend_mask_sse4.h"
83            "${AOM_ROOT}/aom_dsp/x86/blend_a64_hmask_sse4.c"
84            "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_sse4.c"
85            "${AOM_ROOT}/aom_dsp/x86/blend_a64_vmask_sse4.c"
86            "${AOM_ROOT}/aom_dsp/x86/intrapred_sse4.c"
87            "${AOM_ROOT}/aom_dsp/x86/intrapred_utils.h")
88
89list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
90            "${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_avx2.c"
91            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c"
92            "${AOM_ROOT}/aom_dsp/x86/common_avx2.h"
93            "${AOM_ROOT}/aom_dsp/x86/txfm_common_avx2.h"
94            "${AOM_ROOT}/aom_dsp/x86/convolve_avx2.h"
95            "${AOM_ROOT}/aom_dsp/x86/intrapred_avx2.c"
96            "${AOM_ROOT}/aom_dsp/x86/loopfilter_avx2.c"
97            "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_avx2.c"
98            "${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_avx2.h")
99
100if(CONFIG_SVT_AV1)
101  list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
102              "${AOM_ROOT}/third_party/SVT-AV1/convolve_2d_avx2.h"
103              "${AOM_ROOT}/third_party/SVT-AV1/convolve_avx2.h"
104              "${AOM_ROOT}/third_party/SVT-AV1/EbMemory_AVX2.h"
105              "${AOM_ROOT}/third_party/SVT-AV1/EbMemory_SSE4_1.h"
106              "${AOM_ROOT}/third_party/SVT-AV1/synonyms.h")
107endif()
108
109list(APPEND AOM_DSP_COMMON_INTRIN_NEON
110            "${AOM_ROOT}/aom_dsp/arm/aom_convolve_copy_neon.c"
111            "${AOM_ROOT}/aom_dsp/arm/aom_convolve8_neon.c"
112            "${AOM_ROOT}/aom_dsp/arm/aom_scaled_convolve8_neon.c"
113            "${AOM_ROOT}/aom_dsp/arm/loopfilter_neon.c"
114            "${AOM_ROOT}/aom_dsp/arm/intrapred_neon.c"
115            "${AOM_ROOT}/aom_dsp/arm/blend_a64_mask_neon.c")
116
117list(APPEND AOM_DSP_COMMON_INTRIN_NEON_DOTPROD
118            "${AOM_ROOT}/aom_dsp/arm/aom_convolve8_neon_dotprod.c"
119            "${AOM_ROOT}/aom_dsp/arm/aom_scaled_convolve8_neon_dotprod.c")
120
121list(APPEND AOM_DSP_COMMON_INTRIN_NEON_I8MM
122            "${AOM_ROOT}/aom_dsp/arm/aom_convolve8_neon_i8mm.c"
123            "${AOM_ROOT}/aom_dsp/arm/aom_scaled_convolve8_neon_i8mm.c")
124
125if(CONFIG_AV1_HIGHBITDEPTH)
126  list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
127              "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_sse2.c"
128              "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.c"
129              "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c")
130
131  list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
132              "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c")
133
134  list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
135              "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c"
136              "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_avx2.c")
137
138  list(APPEND AOM_DSP_COMMON_INTRIN_NEON
139              "${AOM_ROOT}/aom_dsp/arm/highbd_blend_a64_hmask_neon.c"
140              "${AOM_ROOT}/aom_dsp/arm/highbd_blend_a64_mask_neon.c"
141              "${AOM_ROOT}/aom_dsp/arm/highbd_blend_a64_vmask_neon.c"
142              "${AOM_ROOT}/aom_dsp/arm/highbd_convolve8_neon.c"
143              "${AOM_ROOT}/aom_dsp/arm/highbd_intrapred_neon.c"
144              "${AOM_ROOT}/aom_dsp/arm/highbd_loopfilter_neon.c")
145
146  list(APPEND AOM_DSP_COMMON_INTRIN_SVE
147              "${AOM_ROOT}/aom_dsp/arm/highbd_convolve8_sve.c")
148endif()
149
150if(CONFIG_AV1_DECODER)
151  list(APPEND AOM_DSP_DECODER_SOURCES
152              "${AOM_ROOT}/aom_dsp/binary_codes_reader.c"
153              "${AOM_ROOT}/aom_dsp/binary_codes_reader.h"
154              "${AOM_ROOT}/aom_dsp/bitreader.c"
155              "${AOM_ROOT}/aom_dsp/bitreader.h" "${AOM_ROOT}/aom_dsp/entdec.c"
156              "${AOM_ROOT}/aom_dsp/entdec.h")
157endif()
158
159if(CONFIG_AV1_ENCODER)
160  list(APPEND AOM_DSP_ENCODER_SOURCES
161              "${AOM_ROOT}/aom_dsp/avg.c"
162              "${AOM_ROOT}/aom_dsp/bitwriter.c"
163              "${AOM_ROOT}/aom_dsp/bitwriter.h"
164              "${AOM_ROOT}/aom_dsp/blk_sse_sum.c"
165              "${AOM_ROOT}/aom_dsp/entenc.c"
166              "${AOM_ROOT}/aom_dsp/entenc.h"
167              "${AOM_ROOT}/aom_dsp/fft.c"
168              "${AOM_ROOT}/aom_dsp/fft_common.h"
169              "${AOM_ROOT}/aom_dsp/fwd_txfm.c"
170              "${AOM_ROOT}/aom_dsp/psnr.c"
171              "${AOM_ROOT}/aom_dsp/psnr.h"
172              "${AOM_ROOT}/aom_dsp/quantize.c"
173              "${AOM_ROOT}/aom_dsp/quantize.h"
174              "${AOM_ROOT}/aom_dsp/sad.c"
175              "${AOM_ROOT}/aom_dsp/sad_av1.c"
176              "${AOM_ROOT}/aom_dsp/subtract.c"
177              "${AOM_ROOT}/aom_dsp/sse.c"
178              "${AOM_ROOT}/aom_dsp/ssim.c"
179              "${AOM_ROOT}/aom_dsp/ssim.h"
180              "${AOM_ROOT}/aom_dsp/sum_squares.c"
181              "${AOM_ROOT}/aom_dsp/variance.c"
182              "${AOM_ROOT}/aom_dsp/variance.h")
183
184  # Flow estimation library and grain/noise table/model.
185  if(NOT CONFIG_REALTIME_ONLY)
186    list(APPEND AOM_DSP_ENCODER_SOURCES
187                "${AOM_ROOT}/aom_dsp/pyramid.c"
188                "${AOM_ROOT}/aom_dsp/binary_codes_writer.c"
189                "${AOM_ROOT}/aom_dsp/binary_codes_writer.h"
190                "${AOM_ROOT}/aom_dsp/flow_estimation/corner_detect.c"
191                "${AOM_ROOT}/aom_dsp/flow_estimation/corner_match.c"
192                "${AOM_ROOT}/aom_dsp/flow_estimation/disflow.c"
193                "${AOM_ROOT}/aom_dsp/flow_estimation/flow_estimation.c"
194                "${AOM_ROOT}/aom_dsp/grain_table.c"
195                "${AOM_ROOT}/aom_dsp/grain_table.h"
196                "${AOM_ROOT}/aom_dsp/noise_model.c"
197                "${AOM_ROOT}/aom_dsp/noise_model.h"
198                "${AOM_ROOT}/aom_dsp/noise_util.c"
199                "${AOM_ROOT}/aom_dsp/noise_util.h"
200                "${AOM_ROOT}/aom_dsp/flow_estimation/ransac.c")
201
202    list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
203                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/corner_match_sse4.c"
204                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/disflow_sse4.c")
205
206    list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
207                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/corner_match_avx2.c"
208                "${AOM_ROOT}/aom_dsp/flow_estimation/x86/disflow_avx2.c")
209
210    list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
211                "${AOM_ROOT}/aom_dsp/flow_estimation/arm/disflow_neon.c")
212
213    list(APPEND AOM_DSP_ENCODER_INTRIN_SVE
214                "${AOM_ROOT}/aom_dsp/flow_estimation/arm/disflow_sve.c")
215  endif()
216
217  list(APPEND AOM_DSP_ENCODER_ASM_SSE2 "${AOM_ROOT}/aom_dsp/x86/sad4d_sse2.asm"
218              "${AOM_ROOT}/aom_dsp/x86/sad_sse2.asm"
219              "${AOM_ROOT}/aom_dsp/x86/subtract_sse2.asm")
220
221  list(APPEND AOM_DSP_ENCODER_ASM_SSE2_X86_64
222              "${AOM_ROOT}/aom_dsp/x86/ssim_sse2_x86_64.asm")
223
224  list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
225              "${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse2.c"
226              "${AOM_ROOT}/aom_dsp/x86/fft_sse2.c"
227              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_impl_sse2.h"
228              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.c"
229              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.h"
230              "${AOM_ROOT}/aom_dsp/x86/quantize_sse2.c"
231              "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_sse2.c"
232              "${AOM_ROOT}/aom_dsp/x86/quantize_x86.h"
233              "${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_sse2.c"
234              "${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.c"
235              "${AOM_ROOT}/aom_dsp/x86/variance_sse2.c"
236              "${AOM_ROOT}/aom_dsp/x86/jnt_sad_sse2.c")
237
238  list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
239              "${AOM_ROOT}/aom_dsp/x86/subpel_variance_ssse3.asm")
240
241  list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
242              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
243              "${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm")
244
245  list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
246              "${AOM_ROOT}/aom_dsp/x86/avg_intrin_avx2.c"
247              "${AOM_ROOT}/aom_dsp/x86/fft_avx2.c"
248              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_avx2.c"
249              "${AOM_ROOT}/aom_dsp/x86/subtract_avx2.c"
250              "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_avx2.c"
251              "${AOM_ROOT}/aom_dsp/x86/quantize_avx2.c"
252              "${AOM_ROOT}/aom_dsp/x86/sad4d_avx2.c"
253              "${AOM_ROOT}/aom_dsp/x86/sad_avx2.c"
254              "${AOM_ROOT}/aom_dsp/x86/sad_impl_avx2.c"
255              "${AOM_ROOT}/aom_dsp/x86/variance_avx2.c"
256              "${AOM_ROOT}/aom_dsp/x86/sse_avx2.c"
257              "${AOM_ROOT}/aom_dsp/x86/variance_impl_avx2.c"
258              "${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c"
259              "${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c"
260              "${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_avx2.c"
261              "${AOM_ROOT}/aom_dsp/x86/sum_squares_avx2.c")
262
263  list(APPEND AOM_DSP_ENCODER_INTRIN_AVX
264              "${AOM_ROOT}/aom_dsp/x86/aom_quantize_avx.c")
265
266  list(APPEND AOM_DSP_ENCODER_INTRIN_SSSE3
267              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.h"
268              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.c"
269              "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.h"
270              "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.c"
271              "${AOM_ROOT}/aom_dsp/x86/quantize_ssse3.c"
272              "${AOM_ROOT}/aom_dsp/x86/variance_impl_ssse3.c"
273              "${AOM_ROOT}/aom_dsp/x86/variance_ssse3.c"
274              "${AOM_ROOT}/aom_dsp/x86/jnt_variance_ssse3.c")
275
276  list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
277              "${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse4.c"
278              "${AOM_ROOT}/aom_dsp/x86/sse_sse4.c"
279              "${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
280              "${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
281
282  list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
283              "${AOM_ROOT}/aom_dsp/arm/avg_pred_neon.c"
284              "${AOM_ROOT}/aom_dsp/arm/fwd_txfm_neon.c"
285              "${AOM_ROOT}/aom_dsp/arm/sadxd_neon.c"
286              "${AOM_ROOT}/aom_dsp/arm/sad_neon.c"
287              "${AOM_ROOT}/aom_dsp/arm/masked_sad_neon.c"
288              "${AOM_ROOT}/aom_dsp/arm/subpel_variance_neon.c"
289              "${AOM_ROOT}/aom_dsp/arm/variance_neon.c"
290              "${AOM_ROOT}/aom_dsp/arm/hadamard_neon.c"
291              "${AOM_ROOT}/aom_dsp/arm/avg_neon.c"
292              "${AOM_ROOT}/aom_dsp/arm/obmc_variance_neon.c"
293              "${AOM_ROOT}/aom_dsp/arm/obmc_sad_neon.c"
294              "${AOM_ROOT}/aom_dsp/arm/sse_neon.c"
295              "${AOM_ROOT}/aom_dsp/arm/subtract_neon.c"
296              "${AOM_ROOT}/aom_dsp/arm/sum_squares_neon.c"
297              "${AOM_ROOT}/aom_dsp/arm/blk_sse_sum_neon.c")
298
299  list(APPEND AOM_DSP_ENCODER_INTRIN_NEON_DOTPROD
300              "${AOM_ROOT}/aom_dsp/arm/sad_neon_dotprod.c"
301              "${AOM_ROOT}/aom_dsp/arm/sadxd_neon_dotprod.c"
302              "${AOM_ROOT}/aom_dsp/arm/sse_neon_dotprod.c"
303              "${AOM_ROOT}/aom_dsp/arm/sum_squares_neon_dotprod.c"
304              "${AOM_ROOT}/aom_dsp/arm/variance_neon_dotprod.c")
305
306  list(APPEND AOM_DSP_ENCODER_INTRIN_SVE "${AOM_ROOT}/aom_dsp/arm/avg_sve.c"
307              "${AOM_ROOT}/aom_dsp/arm/blk_sse_sum_sve.c"
308              "${AOM_ROOT}/aom_dsp/arm/sum_squares_sve.c")
309
310  if(CONFIG_AV1_HIGHBITDEPTH)
311    list(APPEND AOM_DSP_ENCODER_ASM_SSE2
312                "${AOM_ROOT}/aom_dsp/x86/highbd_sad4d_sse2.asm"
313                "${AOM_ROOT}/aom_dsp/x86/highbd_sad_sse2.asm"
314                "${AOM_ROOT}/aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm"
315                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_impl_sse2.asm")
316
317    list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
318                "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_sse2.c"
319                "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
320                "${AOM_ROOT}/aom_dsp/x86/highbd_subtract_sse2.c"
321                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse2.c")
322
323    list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
324                "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_avx2.c"
325                "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_avx2.c"
326                "${AOM_ROOT}/aom_dsp/x86/highbd_sad_avx2.c"
327                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_avx2.c")
328
329    list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
330                "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse4.c")
331
332    list(APPEND AOM_DSP_ENCODER_INTRIN_NEON
333                "${AOM_ROOT}/aom_dsp/arm/highbd_avg_neon.c"
334                "${AOM_ROOT}/aom_dsp/arm/highbd_avg_pred_neon.c"
335                "${AOM_ROOT}/aom_dsp/arm/highbd_hadamard_neon.c"
336                "${AOM_ROOT}/aom_dsp/arm/highbd_masked_sad_neon.c"
337                "${AOM_ROOT}/aom_dsp/arm/highbd_obmc_sad_neon.c"
338                "${AOM_ROOT}/aom_dsp/arm/highbd_obmc_variance_neon.c"
339                "${AOM_ROOT}/aom_dsp/arm/highbd_quantize_neon.c"
340                "${AOM_ROOT}/aom_dsp/arm/highbd_sad_neon.c"
341                "${AOM_ROOT}/aom_dsp/arm/highbd_sadxd_neon.c"
342                "${AOM_ROOT}/aom_dsp/arm/highbd_sse_neon.c"
343                "${AOM_ROOT}/aom_dsp/arm/highbd_subpel_variance_neon.c"
344                "${AOM_ROOT}/aom_dsp/arm/highbd_variance_neon.c")
345
346    list(APPEND AOM_DSP_ENCODER_INTRIN_NEON_DOTPROD
347                "${AOM_ROOT}/aom_dsp/arm/highbd_variance_neon_dotprod.c")
348
349    list(APPEND AOM_DSP_ENCODER_INTRIN_SVE
350                "${AOM_ROOT}/aom_dsp/arm/highbd_sse_sve.c"
351                "${AOM_ROOT}/aom_dsp/arm/highbd_variance_sve.c")
352  endif()
353
354  if(CONFIG_INTERNAL_STATS)
355    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/fastssim.c"
356                "${AOM_ROOT}/aom_dsp/psnrhvs.c")
357  endif()
358
359  if(CONFIG_TUNE_VMAF)
360    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/vmaf.c"
361                "${AOM_ROOT}/aom_dsp/vmaf.h")
362  endif()
363
364  if(CONFIG_TUNE_BUTTERAUGLI)
365    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/butteraugli.c"
366                "${AOM_ROOT}/aom_dsp/butteraugli.h")
367  endif()
368
369  if(CONFIG_REALTIME_ONLY)
370    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_AVX2
371                     "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_avx2.c"
372                     "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_avx2.c"
373                     "${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c"
374                     "${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c")
375
376    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE4_1
377                     "${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
378                     "${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
379
380    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE2
381                     "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_sse2.c"
382                     "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_sse2.c")
383
384    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_NEON
385                     "${AOM_ROOT}/aom_dsp/arm/highbd_obmc_sad_neon.c"
386                     "${AOM_ROOT}/aom_dsp/arm/highbd_obmc_variance_neon.c"
387                     "${AOM_ROOT}/aom_dsp/arm/obmc_sad_neon.c"
388                     "${AOM_ROOT}/aom_dsp/arm/obmc_variance_neon.c")
389  endif()
390endif()
391
392# Creates aom_dsp build targets. Must not be called until after libaom target
393# has been created.
394function(setup_aom_dsp_targets)
395  add_library(aom_dsp_common OBJECT ${AOM_DSP_COMMON_SOURCES})
396  list(APPEND AOM_LIB_TARGETS aom_dsp_common)
397  create_no_op_source_file("aom_av1" "c" "no_op_source_file")
398  add_library(aom_dsp OBJECT "${no_op_source_file}")
399  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
400  if(BUILD_SHARED_LIBS)
401    target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
402  endif()
403  list(APPEND AOM_LIB_TARGETS aom_dsp)
404
405  # Not all generators support libraries consisting only of object files. Add a
406  # source file to the aom_dsp target.
407  add_no_op_source_file_to_target("aom_dsp" "c")
408
409  if(CONFIG_AV1_DECODER)
410    add_library(aom_dsp_decoder OBJECT ${AOM_DSP_DECODER_SOURCES})
411    list(APPEND AOM_LIB_TARGETS aom_dsp_decoder)
412    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
413    if(BUILD_SHARED_LIBS)
414      target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
415    endif()
416  endif()
417
418  if(CONFIG_AV1_ENCODER)
419    add_library(aom_dsp_encoder OBJECT ${AOM_DSP_ENCODER_SOURCES})
420    list(APPEND AOM_LIB_TARGETS aom_dsp_encoder)
421    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
422    if(BUILD_SHARED_LIBS)
423      target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
424    endif()
425    if(CONFIG_TUNE_VMAF)
426      target_include_directories(aom_dsp_encoder PRIVATE ${VMAF_INCLUDE_DIRS})
427    endif()
428  endif()
429
430  if(HAVE_SSE2)
431    add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2")
432    add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_common"
433                                  "AOM_DSP_COMMON_INTRIN_SSE2")
434
435    if(CONFIG_AV1_ENCODER)
436      if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
437        list(APPEND AOM_DSP_ENCODER_ASM_SSE2 ${AOM_DSP_ENCODER_ASM_SSE2_X86_64})
438      endif()
439      add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2")
440      add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_encoder"
441                                    "AOM_DSP_ENCODER_INTRIN_SSE2")
442    endif()
443  endif()
444
445  if(HAVE_SSSE3)
446    add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3")
447    add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_common"
448                                  "AOM_DSP_COMMON_INTRIN_SSSE3")
449
450    if(CONFIG_AV1_ENCODER)
451      if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
452        list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
453                    ${AOM_DSP_ENCODER_ASM_SSSE3_X86_64})
454      endif()
455      add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3")
456      add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_encoder"
457                                    "AOM_DSP_ENCODER_INTRIN_SSSE3")
458    endif()
459  endif()
460
461  if(HAVE_SSE4_1)
462    add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_common"
463                                  "AOM_DSP_COMMON_INTRIN_SSE4_1")
464    if(CONFIG_AV1_ENCODER)
465      add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_encoder"
466                                    "AOM_DSP_ENCODER_INTRIN_SSE4_1")
467    endif()
468  endif()
469
470  if(HAVE_AVX)
471    if(CONFIG_AV1_ENCODER)
472      add_intrinsics_object_library("-mavx" "avx" "aom_dsp_encoder"
473                                    "AOM_DSP_ENCODER_INTRIN_AVX")
474    endif()
475  endif()
476
477  if(HAVE_AVX2)
478    add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_common"
479                                  "AOM_DSP_COMMON_INTRIN_AVX2")
480    if(CONFIG_AV1_ENCODER)
481      add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_encoder"
482                                    "AOM_DSP_ENCODER_INTRIN_AVX2")
483    endif()
484  endif()
485
486  if(HAVE_NEON)
487    add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
488                                  "aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON")
489    if(CONFIG_AV1_ENCODER)
490      add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
491                                    "aom_dsp_encoder"
492                                    "AOM_DSP_ENCODER_INTRIN_NEON")
493    endif()
494  endif()
495
496  if(HAVE_NEON_DOTPROD)
497    add_intrinsics_object_library("${AOM_NEON_DOTPROD_FLAG}" "neon_dotprod"
498                                  "aom_dsp_common"
499                                  "AOM_DSP_COMMON_INTRIN_NEON_DOTPROD")
500    if(CONFIG_AV1_ENCODER)
501      add_intrinsics_object_library("${AOM_NEON_DOTPROD_FLAG}" "neon_dotprod"
502                                    "aom_dsp_encoder"
503                                    "AOM_DSP_ENCODER_INTRIN_NEON_DOTPROD")
504    endif()
505  endif()
506
507  if(HAVE_NEON_I8MM)
508    add_intrinsics_object_library("${AOM_NEON_I8MM_FLAG}" "neon_i8mm"
509                                  "aom_dsp_common"
510                                  "AOM_DSP_COMMON_INTRIN_NEON_I8MM")
511  endif()
512
513  if(HAVE_SVE)
514    add_intrinsics_object_library("${AOM_SVE_FLAG}" "sve" "aom_dsp_common"
515                                  "AOM_DSP_COMMON_INTRIN_SVE")
516    if(CONFIG_AV1_ENCODER)
517      add_intrinsics_object_library("${AOM_SVE_FLAG}" "sve" "aom_dsp_encoder"
518                                    "AOM_DSP_ENCODER_INTRIN_SVE")
519    endif()
520  endif()
521
522  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp>)
523  if(BUILD_SHARED_LIBS)
524    target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp>)
525  endif()
526
527  # Pass the new lib targets up to the parent scope instance of
528  # $AOM_LIB_TARGETS.
529  set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
530endfunction()
531