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/fft.c"
33            "${AOM_ROOT}/aom_dsp/fft_common.h"
34            "${AOM_ROOT}/aom_dsp/intrapred.c"
35            "${AOM_ROOT}/aom_dsp/intrapred_common.h"
36            "${AOM_ROOT}/aom_dsp/loopfilter.c"
37            "${AOM_ROOT}/aom_dsp/prob.h"
38            "${AOM_ROOT}/aom_dsp/recenter.h"
39            "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics.h"
40            "${AOM_ROOT}/aom_dsp/simd/v128_intrinsics_c.h"
41            "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics.h"
42            "${AOM_ROOT}/aom_dsp/simd/v256_intrinsics_c.h"
43            "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics.h"
44            "${AOM_ROOT}/aom_dsp/simd/v64_intrinsics_c.h"
45            "${AOM_ROOT}/aom_dsp/subtract.c"
46            "${AOM_ROOT}/aom_dsp/txfm_common.h"
47            "${AOM_ROOT}/aom_dsp/x86/convolve_common_intrin.h"
48            "${AOM_ROOT}/aom_dsp/avg.c")
49
50list(APPEND AOM_DSP_COMMON_ASM_SSE2
51            "${AOM_ROOT}/aom_dsp/x86/aom_convolve_copy_sse2.asm"
52            "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_8t_sse2.asm"
53            "${AOM_ROOT}/aom_dsp/x86/aom_high_subpixel_bilinear_sse2.asm"
54            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_sse2.asm"
55            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_sse2.asm"
56            "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_asm_sse2.asm"
57            "${AOM_ROOT}/aom_dsp/x86/intrapred_asm_sse2.asm"
58            "${AOM_ROOT}/aom_dsp/x86/inv_wht_sse2.asm")
59
60list(APPEND AOM_DSP_COMMON_INTRIN_SSE2
61            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_sse2.c"
62            "${AOM_ROOT}/aom_dsp/x86/aom_asm_stubs.c"
63            "${AOM_ROOT}/aom_dsp/x86/convolve.h"
64            "${AOM_ROOT}/aom_dsp/x86/convolve_sse2.h"
65            "${AOM_ROOT}/aom_dsp/x86/fft_sse2.c"
66            "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_sse2.c"
67            "${AOM_ROOT}/aom_dsp/x86/highbd_intrapred_sse2.c"
68            "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c"
69            "${AOM_ROOT}/aom_dsp/x86/intrapred_sse2.c"
70            "${AOM_ROOT}/aom_dsp/x86/intrapred_x86.h"
71            "${AOM_ROOT}/aom_dsp/x86/loopfilter_sse2.c"
72            "${AOM_ROOT}/aom_dsp/x86/lpf_common_sse2.h"
73            "${AOM_ROOT}/aom_dsp/x86/mem_sse2.h"
74            "${AOM_ROOT}/aom_dsp/x86/transpose_sse2.h"
75            "${AOM_ROOT}/aom_dsp/x86/txfm_common_sse2.h"
76            "${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.h"
77            "${AOM_ROOT}/aom_dsp/x86/avg_intrin_sse2.c"
78            "${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_sse2.h")
79
80if(NOT CONFIG_AV1_HIGHBITDEPTH)
81  list(REMOVE_ITEM AOM_DSP_COMMON_INTRIN_SSE2
82                   "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_sse2.c"
83                   "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c")
84endif()
85
86list(APPEND AOM_DSP_COMMON_ASM_SSSE3
87            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
88            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm")
89
90list(APPEND AOM_DSP_COMMON_INTRIN_SSSE3
91            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_ssse3.c"
92            "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c"
93            "${AOM_ROOT}/aom_dsp/x86/intrapred_ssse3.c")
94
95if(NOT CONFIG_AV1_HIGHBITDEPTH)
96  list(REMOVE_ITEM AOM_DSP_COMMON_INTRIN_SSSE3
97                   "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_ssse3.c")
98endif()
99
100list(APPEND AOM_DSP_COMMON_INTRIN_SSE4_1
101            "${AOM_ROOT}/aom_dsp/x86/blend_mask_sse4.h"
102            "${AOM_ROOT}/aom_dsp/x86/blend_a64_hmask_sse4.c"
103            "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_sse4.c"
104            "${AOM_ROOT}/aom_dsp/x86/blend_a64_vmask_sse4.c")
105
106list(APPEND AOM_DSP_COMMON_INTRIN_AVX2
107            "${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c"
108            "${AOM_ROOT}/aom_dsp/x86/common_avx2.h"
109            "${AOM_ROOT}/aom_dsp/x86/txfm_common_avx2.h"
110            "${AOM_ROOT}/aom_dsp/x86/convolve_avx2.h"
111            "${AOM_ROOT}/aom_dsp/x86/fft_avx2.c"
112            "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c"
113            "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_avx2.c"
114            "${AOM_ROOT}/aom_dsp/x86/intrapred_avx2.c"
115            "${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_avx2.c"
116            "${AOM_ROOT}/aom_dsp/x86/avg_intrin_avx2.c"
117            "${AOM_ROOT}/aom_dsp/x86/bitdepth_conversion_avx2.h")
118
119if(NOT CONFIG_AV1_HIGHBITDEPTH)
120  list(REMOVE_ITEM AOM_DSP_COMMON_INTRIN_AVX2
121                   "${AOM_ROOT}/aom_dsp/x86/highbd_convolve_avx2.c"
122                   "${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_avx2.c")
123endif()
124
125list(APPEND AOM_DSP_COMMON_INTRIN_NEON "${AOM_ROOT}/aom_dsp/arm/fwd_txfm_neon.c"
126            "${AOM_ROOT}/aom_dsp/arm/loopfilter_neon.c"
127            "${AOM_ROOT}/aom_dsp/arm/intrapred_neon.c"
128            "${AOM_ROOT}/aom_dsp/arm/subtract_neon.c"
129            "${AOM_ROOT}/aom_dsp/arm/blend_a64_mask_neon.c")
130
131list(APPEND AOM_DSP_COMMON_INTRIN_DSPR2
132            "${AOM_ROOT}/aom_dsp/mips/common_dspr2.c"
133            "${AOM_ROOT}/aom_dsp/mips/common_dspr2.h"
134            "${AOM_ROOT}/aom_dsp/mips/convolve2_dspr2.c"
135            "${AOM_ROOT}/aom_dsp/mips/convolve2_horiz_dspr2.c"
136            "${AOM_ROOT}/aom_dsp/mips/convolve2_vert_dspr2.c"
137            "${AOM_ROOT}/aom_dsp/mips/convolve8_dspr2.c"
138            "${AOM_ROOT}/aom_dsp/mips/convolve8_horiz_dspr2.c"
139            "${AOM_ROOT}/aom_dsp/mips/convolve8_vert_dspr2.c"
140            "${AOM_ROOT}/aom_dsp/mips/convolve_common_dspr2.h"
141            "${AOM_ROOT}/aom_dsp/mips/intrapred16_dspr2.c"
142            "${AOM_ROOT}/aom_dsp/mips/intrapred4_dspr2.c"
143            "${AOM_ROOT}/aom_dsp/mips/intrapred8_dspr2.c"
144            "${AOM_ROOT}/aom_dsp/mips/inv_txfm_dspr2.h")
145
146list(APPEND AOM_DSP_COMMON_INTRIN_MSA
147            "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_horiz_msa.c"
148            "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_vert_msa.c"
149            "${AOM_ROOT}/aom_dsp/mips/aom_convolve_copy_msa.c"
150            "${AOM_ROOT}/aom_dsp/mips/aom_convolve_msa.h"
151            "${AOM_ROOT}/aom_dsp/mips/intrapred_msa.c"
152            "${AOM_ROOT}/aom_dsp/mips/macros_msa.h")
153
154if(CONFIG_AV1_DECODER)
155  list(APPEND AOM_DSP_DECODER_SOURCES
156              "${AOM_ROOT}/aom_dsp/binary_codes_reader.c"
157              "${AOM_ROOT}/aom_dsp/binary_codes_reader.h"
158              "${AOM_ROOT}/aom_dsp/bitreader.c"
159              "${AOM_ROOT}/aom_dsp/bitreader.h" "${AOM_ROOT}/aom_dsp/entdec.c"
160              "${AOM_ROOT}/aom_dsp/entdec.h"
161              "${AOM_ROOT}/aom_dsp/grain_synthesis.c"
162              "${AOM_ROOT}/aom_dsp/grain_synthesis.h")
163endif()
164
165if(CONFIG_AV1_ENCODER)
166  list(APPEND AOM_DSP_ENCODER_SOURCES
167              "${AOM_ROOT}/aom_dsp/binary_codes_writer.c"
168              "${AOM_ROOT}/aom_dsp/binary_codes_writer.h"
169              "${AOM_ROOT}/aom_dsp/bitwriter.c"
170              "${AOM_ROOT}/aom_dsp/bitwriter.h"
171              "${AOM_ROOT}/aom_dsp/blk_sse_sum.c"
172              "${AOM_ROOT}/aom_dsp/entenc.c"
173              "${AOM_ROOT}/aom_dsp/entenc.h"
174              "${AOM_ROOT}/aom_dsp/fwd_txfm.c"
175              "${AOM_ROOT}/aom_dsp/grain_table.c"
176              "${AOM_ROOT}/aom_dsp/grain_table.h"
177              "${AOM_ROOT}/aom_dsp/noise_model.c"
178              "${AOM_ROOT}/aom_dsp/noise_model.h"
179              "${AOM_ROOT}/aom_dsp/noise_util.c"
180              "${AOM_ROOT}/aom_dsp/noise_util.h"
181              "${AOM_ROOT}/aom_dsp/psnr.c"
182              "${AOM_ROOT}/aom_dsp/psnr.h"
183              "${AOM_ROOT}/aom_dsp/quantize.c"
184              "${AOM_ROOT}/aom_dsp/quantize.h"
185              "${AOM_ROOT}/aom_dsp/sad.c"
186              "${AOM_ROOT}/aom_dsp/sse.c"
187              "${AOM_ROOT}/aom_dsp/sad_av1.c"
188              "${AOM_ROOT}/aom_dsp/sum_squares.c"
189              "${AOM_ROOT}/aom_dsp/variance.c"
190              "${AOM_ROOT}/aom_dsp/variance.h")
191
192  list(APPEND AOM_DSP_ENCODER_ASM_SSE2
193              "${AOM_ROOT}/aom_dsp/x86/highbd_sad4d_sse2.asm"
194              "${AOM_ROOT}/aom_dsp/x86/highbd_sad_sse2.asm"
195              "${AOM_ROOT}/aom_dsp/x86/highbd_subpel_variance_impl_sse2.asm"
196              "${AOM_ROOT}/aom_dsp/x86/highbd_variance_impl_sse2.asm"
197              "${AOM_ROOT}/aom_dsp/x86/sad4d_sse2.asm"
198              "${AOM_ROOT}/aom_dsp/x86/sad_sse2.asm"
199              "${AOM_ROOT}/aom_dsp/x86/subpel_variance_sse2.asm"
200              "${AOM_ROOT}/aom_dsp/x86/subtract_sse2.asm")
201
202  list(APPEND AOM_DSP_ENCODER_ASM_SSE2_X86_64
203              "${AOM_ROOT}/aom_dsp/x86/ssim_sse2_x86_64.asm")
204
205  list(APPEND AOM_DSP_ENCODER_INTRIN_SSE2
206              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_impl_sse2.h"
207              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.c"
208              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_sse2.h"
209              "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
210              "${AOM_ROOT}/aom_dsp/x86/highbd_subtract_sse2.c"
211              "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse2.c"
212              "${AOM_ROOT}/aom_dsp/x86/quantize_sse2.c"
213              "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_sse2.c"
214              "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_sse2.c"
215              "${AOM_ROOT}/aom_dsp/x86/quantize_x86.h"
216              "${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_sse2.c"
217              "${AOM_ROOT}/aom_dsp/x86/sum_squares_sse2.c"
218              "${AOM_ROOT}/aom_dsp/x86/variance_sse2.c")
219  if(NOT CONFIG_AV1_HIGHBITDEPTH)
220    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE2
221                     "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_sse2.c"
222                     "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_sse2.c"
223                     "${AOM_ROOT}/aom_dsp/x86/highbd_subtract_sse2.c"
224                     "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse2.c")
225  endif()
226
227  list(APPEND AOM_DSP_ENCODER_ASM_SSSE3_X86_64
228              "${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
229              "${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm")
230
231  list(APPEND AOM_DSP_ENCODER_INTRIN_AVX2
232              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_avx2.c"
233              "${AOM_ROOT}/aom_dsp/x86/subtract_avx2.c"
234              "${AOM_ROOT}/aom_dsp/x86/highbd_quantize_intrin_avx2.c"
235              "${AOM_ROOT}/aom_dsp/x86/adaptive_quantize_avx2.c"
236              "${AOM_ROOT}/aom_dsp/x86/highbd_adaptive_quantize_avx2.c"
237              "${AOM_ROOT}/aom_dsp/x86/sad4d_avx2.c"
238              "${AOM_ROOT}/aom_dsp/x86/sad_avx2.c"
239              "${AOM_ROOT}/aom_dsp/x86/sad_highbd_avx2.c"
240              "${AOM_ROOT}/aom_dsp/x86/sad_impl_avx2.c"
241              "${AOM_ROOT}/aom_dsp/x86/variance_avx2.c"
242              "${AOM_ROOT}/aom_dsp/x86/highbd_variance_avx2.c"
243              "${AOM_ROOT}/aom_dsp/x86/sse_avx2.c"
244              "${AOM_ROOT}/aom_dsp/x86/variance_impl_avx2.c"
245              "${AOM_ROOT}/aom_dsp/x86/obmc_sad_avx2.c"
246              "${AOM_ROOT}/aom_dsp/x86/obmc_variance_avx2.c"
247              "${AOM_ROOT}/aom_dsp/x86/blk_sse_sum_avx2.c"
248              "${AOM_ROOT}/aom_dsp/x86/sum_squares_avx2.c")
249
250  list(APPEND AOM_DSP_ENCODER_AVX_ASM_X86_64
251              "${AOM_ROOT}/aom_dsp/x86/quantize_avx_x86_64.asm")
252
253  list(APPEND AOM_DSP_ENCODER_INTRIN_SSSE3
254              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.h"
255              "${AOM_ROOT}/aom_dsp/x86/masked_sad_intrin_ssse3.c"
256              "${AOM_ROOT}/aom_dsp/x86/masked_sad4d_ssse3.c"
257              "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.h"
258              "${AOM_ROOT}/aom_dsp/x86/masked_variance_intrin_ssse3.c"
259              "${AOM_ROOT}/aom_dsp/x86/quantize_ssse3.c"
260              "${AOM_ROOT}/aom_dsp/x86/variance_impl_ssse3.c"
261              "${AOM_ROOT}/aom_dsp/x86/jnt_variance_ssse3.c"
262              "${AOM_ROOT}/aom_dsp/x86/jnt_sad_ssse3.c")
263
264  list(APPEND AOM_DSP_ENCODER_INTRIN_SSE4_1
265              "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse4.c"
266              "${AOM_ROOT}/aom_dsp/x86/sse_sse4.c"
267              "${AOM_ROOT}/aom_dsp/x86/obmc_sad_sse4.c"
268              "${AOM_ROOT}/aom_dsp/x86/obmc_variance_sse4.c")
269
270  if(NOT CONFIG_AV1_HIGHBITDEPTH)
271    list(REMOVE_ITEM AOM_DSP_ENCODER_INTRIN_SSE4_1
272                     "${AOM_ROOT}/aom_dsp/x86/highbd_variance_sse4.c")
273  endif()
274
275  list(APPEND AOM_DSP_ENCODER_INTRIN_NEON "${AOM_ROOT}/aom_dsp/arm/sad4d_neon.c"
276              "${AOM_ROOT}/aom_dsp/arm/sad_neon.c"
277              "${AOM_ROOT}/aom_dsp/arm/subpel_variance_neon.c"
278              "${AOM_ROOT}/aom_dsp/arm/variance_neon.c"
279              "${AOM_ROOT}/aom_dsp/arm/hadamard_neon.c"
280              "${AOM_ROOT}/aom_dsp/arm/avg_neon.c"
281              "${AOM_ROOT}/aom_dsp/arm/sse_neon.c")
282
283  list(APPEND AOM_DSP_ENCODER_INTRIN_MSA "${AOM_ROOT}/aom_dsp/mips/sad_msa.c"
284              "${AOM_ROOT}/aom_dsp/mips/subtract_msa.c"
285              "${AOM_ROOT}/aom_dsp/mips/variance_msa.c"
286              "${AOM_ROOT}/aom_dsp/mips/sub_pixel_variance_msa.c")
287
288  if(CONFIG_INTERNAL_STATS)
289    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/fastssim.c"
290                "${AOM_ROOT}/aom_dsp/psnrhvs.c" "${AOM_ROOT}/aom_dsp/ssim.c"
291                "${AOM_ROOT}/aom_dsp/ssim.h")
292  endif()
293
294  if(CONFIG_TUNE_VMAF)
295    list(APPEND AOM_DSP_ENCODER_SOURCES "${AOM_ROOT}/aom_dsp/vmaf.c"
296                "${AOM_ROOT}/aom_dsp/vmaf.h")
297  endif()
298endif()
299
300# Creates aom_dsp build targets. Must not be called until after libaom target
301# has been created.
302function(setup_aom_dsp_targets)
303  add_library(aom_dsp_common OBJECT ${AOM_DSP_COMMON_SOURCES})
304  list(APPEND AOM_LIB_TARGETS aom_dsp_common)
305  create_dummy_source_file("aom_av1" "c" "dummy_source_file")
306  add_library(aom_dsp OBJECT "${dummy_source_file}")
307  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
308  if(BUILD_SHARED_LIBS)
309    target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
310  endif()
311  list(APPEND AOM_LIB_TARGETS aom_dsp)
312
313  # Not all generators support libraries consisting only of object files. Add a
314  # dummy source file to the aom_dsp target.
315  add_dummy_source_file_to_target("aom_dsp" "c")
316
317  if(CONFIG_AV1_DECODER)
318    add_library(aom_dsp_decoder OBJECT ${AOM_DSP_DECODER_SOURCES})
319    list(APPEND AOM_LIB_TARGETS aom_dsp_decoder)
320    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
321    if(BUILD_SHARED_LIBS)
322      target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
323    endif()
324  endif()
325
326  if(CONFIG_AV1_ENCODER)
327    add_library(aom_dsp_encoder OBJECT ${AOM_DSP_ENCODER_SOURCES})
328    list(APPEND AOM_LIB_TARGETS aom_dsp_encoder)
329    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
330    if(BUILD_SHARED_LIBS)
331      target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
332    endif()
333  endif()
334
335  if(HAVE_SSE2)
336    add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2")
337    add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_common"
338                                  "AOM_DSP_COMMON_INTRIN_SSE2")
339
340    if(CONFIG_AV1_ENCODER)
341      if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
342        list(APPEND AOM_DSP_ENCODER_ASM_SSE2 ${AOM_DSP_ENCODER_ASM_SSE2_X86_64})
343      endif()
344      add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2")
345      add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_encoder"
346                                    "AOM_DSP_ENCODER_INTRIN_SSE2")
347    endif()
348  endif()
349
350  if(HAVE_SSSE3)
351    add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3")
352    add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_common"
353                                  "AOM_DSP_COMMON_INTRIN_SSSE3")
354
355    if(CONFIG_AV1_ENCODER)
356      if("${AOM_TARGET_CPU}" STREQUAL "x86_64")
357        list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
358                    ${AOM_DSP_ENCODER_ASM_SSSE3_X86_64})
359      endif()
360      add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3")
361      add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_encoder"
362                                    "AOM_DSP_ENCODER_INTRIN_SSSE3")
363    endif()
364  endif()
365
366  if(HAVE_SSE4_1)
367    add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_common"
368                                  "AOM_DSP_COMMON_INTRIN_SSE4_1")
369    if(CONFIG_AV1_ENCODER)
370      add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_encoder"
371                                    "AOM_DSP_ENCODER_INTRIN_SSE4_1")
372    endif()
373  endif()
374
375  if(HAVE_AVX AND "${AOM_TARGET_CPU}" STREQUAL "x86_64")
376    if(CONFIG_AV1_ENCODER)
377      add_asm_library("aom_dsp_encoder_avx" "AOM_DSP_ENCODER_AVX_ASM_X86_64")
378    endif()
379  endif()
380
381  if(HAVE_AVX2)
382    add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_common"
383                                  "AOM_DSP_COMMON_INTRIN_AVX2")
384    if(CONFIG_AV1_ENCODER)
385      add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_encoder"
386                                    "AOM_DSP_ENCODER_INTRIN_AVX2")
387    endif()
388  endif()
389
390  if(HAVE_NEON)
391    add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
392                                  "aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON")
393    if(CONFIG_AV1_ENCODER)
394      add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
395                                    "aom_dsp_encoder"
396                                    "AOM_DSP_ENCODER_INTRIN_NEON")
397    endif()
398  endif()
399
400  if(HAVE_DSPR2)
401    add_intrinsics_object_library("" "dspr2" "aom_dsp_common"
402                                  "AOM_DSP_COMMON_INTRIN_DSPR2")
403  endif()
404
405  if(HAVE_MSA)
406    add_intrinsics_object_library("" "msa" "aom_dsp_common"
407                                  "AOM_DSP_COMMON_INTRIN_MSA")
408    if(CONFIG_AV1_ENCODER)
409      add_intrinsics_object_library("" "msa" "aom_dsp_encoder"
410                                    "AOM_DSP_ENCODER_INTRIN_MSA")
411    endif()
412  endif()
413
414  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp>)
415  if(BUILD_SHARED_LIBS)
416    target_sources(aom_static PRIVATE $<TARGET_OBJECTS:aom_dsp>)
417  endif()
418
419  # Pass the new lib targets up to the parent scope instance of
420  # $AOM_LIB_TARGETS.
421  set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
422endfunction()
423