Add mips32 support to the cmake build.
Requires use of new cmake toolchain file:
$ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/mips32-linux-gcc.cmake
DSPR2 and MSA are supported via addition of -DENABLE_DSPR2=1 and
-DENABLE_MSA=1 respectively. Note that the latter requires the addition
of -DMIPS_CPU=p5600.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
Change-Id: Idf7d7f2daecf18cc45b834166eaf34ee9f414d49
diff --git a/aom_dsp/aom_dsp.cmake b/aom_dsp/aom_dsp.cmake
index 946fb93..bed72d2 100644
--- a/aom_dsp/aom_dsp.cmake
+++ b/aom_dsp/aom_dsp.cmake
@@ -119,6 +119,59 @@
"${AOM_ROOT}/aom_dsp/arm/loopfilter_8_neon.c")
endif ()
+set(AOM_DSP_COMMON_INTRIN_DSPR2
+ "${AOM_ROOT}/aom_dsp/mips/common_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/common_dspr2.h"
+ "${AOM_ROOT}/aom_dsp/mips/convolve2_avg_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve2_avg_horiz_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve2_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve2_horiz_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve2_vert_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve8_avg_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve8_avg_horiz_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve8_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve8_horiz_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve8_vert_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/convolve_common_dspr2.h"
+ "${AOM_ROOT}/aom_dsp/mips/intrapred16_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/intrapred4_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/intrapred8_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/inv_txfm_dspr2.h"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_filters_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_filters_dspr2.h"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_macros_dspr2.h"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_masks_dspr2.h"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_mb_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_mb_horiz_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_mb_vert_dspr2.c")
+
+set(AOM_DSP_COMMON_INTRIN_MSA
+ "${AOM_ROOT}/aom_dsp/mips/add_noise_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_avg_horiz_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_avg_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_avg_vert_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_horiz_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve8_vert_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve_avg_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve_copy_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/aom_convolve_msa.h"
+ "${AOM_ROOT}/aom_dsp/mips/fwd_dct32x32_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/fwd_txfm_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/fwd_txfm_msa.h"
+ "${AOM_ROOT}/aom_dsp/mips/idct16x16_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/idct32x32_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/idct4x4_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/idct8x8_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/intrapred_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/inv_txfm_msa.h"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_16_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_4_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_8_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/loopfilter_msa.h"
+ "${AOM_ROOT}/aom_dsp/mips/macros_msa.h"
+ "${AOM_ROOT}/aom_dsp/mips/txfm_macros_msa.h")
+
if (CONFIG_HIGHBITDEPTH)
set(AOM_DSP_COMMON_ASM_SSE2
${AOM_DSP_COMMON_ASM_SSE2}
@@ -127,6 +180,14 @@
set(AOM_DSP_COMMON_INTRIN_SSE2
${AOM_DSP_COMMON_INTRIN_SSE2}
"${AOM_ROOT}/aom_dsp/x86/highbd_loopfilter_sse2.c")
+else ()
+ set(AOM_DSP_COMMON_INTRIN_DSPR2
+ ${AOM_DSP_COMMON_INTRIN_DSPR2}
+ "${AOM_ROOT}/aom_dsp/mips/itrans16_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/itrans32_cols_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/itrans32_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/itrans4_dspr2.c"
+ "${AOM_ROOT}/aom_dsp/mips/itrans8_dspr2.c")
endif ()
if (CONFIG_ANS)
@@ -263,6 +324,13 @@
${AOM_DSP_ENCODER_AVX_ASM_X86_64}
"${AOM_ROOT}/aom_dsp/x86/quantize_avx_x86_64.asm")
+ set(AOM_DSP_ENCODER_INTRIN_MSA
+ "${AOM_ROOT}/aom_dsp/mips/avg_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/sad_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/subtract_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/variance_msa.c"
+ "${AOM_ROOT}/aom_dsp/mips/sub_pixel_variance_msa.c")
+
if (CONFIG_HIGHBITDEPTH)
set(AOM_DSP_ENCODER_INTRIN_SSE2
${AOM_DSP_ENCODER_INTRIN_SSE2}
@@ -425,6 +493,21 @@
add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
"aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON")
endif ()
+
+ if (HAVE_DSPR2)
+ add_intrinsics_object_library("" "dspr2" "aom_dsp_common"
+ "AOM_DSP_COMMON_INTRIN_DSPR2")
+ endif ()
+
+ if (HAVE_MSA)
+ add_intrinsics_object_library("" "msa" "aom_dsp_common"
+ "AOM_DSP_COMMON_INTRIN_MSA")
+ if (CONFIG_ENCODERS)
+ add_intrinsics_object_library("" "msa" "aom_dsp_encoder"
+ "AOM_DSP_ENCODER_INTRIN_MSA")
+ endif ()
+ endif ()
+
# Pass the new lib targets up to the parent scope instance of
# $AOM_LIB_TARGETS.
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)