mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-11-06 13:28:17 +00:00
Like the x86 versions, these may read and write past the end, here by
up to 15 bytes. The main loops process eight vectors per iteration;
with four, the in-order Cortex-A510 stalls on the latency of the prefix
sums, and add_left_pred_int16 was only 1.25x faster than C there.
checkasm --bench (CPU cycles via perf), seed 12345 (width 983), on a
Dimensity 9000:
Cortex-X2 Cortex-A710 Cortex-A510
add_gradient_pred_c: 2138.4 2183.6 4450.3
add_gradient_pred_neon: 225.7 (9.48x) 380.3 (5.74x) 711.6 (6.25x)
add_left_pred_int16_c: 1926.4 1941.4 2112.0
add_left_pred_int16_neon: 370.6 (5.20x) 630.6 (3.08x) 1058.6 (2.00x)
add_left_pred_rnd_acc_c: 1056.5 1029.6 1743.4
add_left_pred_rnd_acc_neon: 201.9 (5.23x) 347.5 (2.96x) 585.2 (2.98x)
add_left_pred_zero_c: 1056.0 1029.2 1742.3
add_left_pred_zero_neon: 201.8 (5.23x) 347.5 (2.96x) 585.2 (2.98x)
and on a Google Tensor (Pixel 6a):
Cortex-X1 Cortex-A76 Cortex-A55
add_gradient_pred_c: 2137.4 2848.2 6892.2
add_gradient_pred_neon: 238.2 (8.97x) 408.2 (6.98x) 1117.5 (6.17x)
add_left_pred_int16_c: 1935.0 2177.2 3950.8
add_left_pred_int16_neon: 398.0 (4.86x) 664.4 (3.28x) 1690.0 (2.34x)
add_left_pred_rnd_acc_c: 1059.7 1533.9 2967.1
add_left_pred_rnd_acc_neon: 214.5 (4.94x) 378.2 (4.06x) 925.4 (3.21x)
add_left_pred_zero_c: 1059.8 1533.9 2967.1
add_left_pred_zero_neon: 214.5 (4.94x) 378.2 (4.06x) 925.4 (3.21x)
Signed-off-by: Gyula Sebok <gyula.sbk@gmail.com>
98 lines
6.1 KiB
Makefile
98 lines
6.1 KiB
Makefile
# subsystems
|
|
OBJS-$(CONFIG_AC3DSP) += aarch64/ac3dsp_init_aarch64.o
|
|
OBJS-$(CONFIG_AUDIODSP) += aarch64/audiodsp_init.o
|
|
OBJS-$(CONFIG_FDCTDSP) += aarch64/fdctdsp_init_aarch64.o
|
|
OBJS-$(CONFIG_H264CHROMA) += aarch64/h264chroma_init_aarch64.o
|
|
OBJS-$(CONFIG_H264DSP) += aarch64/h264dsp_init_aarch64.o
|
|
OBJS-$(CONFIG_HUFFYUVDSP) += aarch64/huffyuvdsp_init_aarch64.o
|
|
OBJS-$(CONFIG_H264PRED) += aarch64/h264pred_init.o
|
|
OBJS-$(CONFIG_H264QPEL) += aarch64/h264qpel_init_aarch64.o
|
|
OBJS-$(CONFIG_HPELDSP) += aarch64/hpeldsp_init_aarch64.o
|
|
OBJS-$(CONFIG_IDCTDSP) += aarch64/idctdsp_init_aarch64.o
|
|
OBJS-$(CONFIG_LLVIDDSP) += aarch64/lossless_videodsp_init.o
|
|
OBJS-$(CONFIG_ME_CMP) += aarch64/me_cmp_init_aarch64.o
|
|
OBJS-$(CONFIG_MPEGAUDIODSP) += aarch64/mpegaudiodsp_init.o
|
|
OBJS-$(CONFIG_MPEGVIDEOENCDSP) += aarch64/mpegvideoencdsp_init.o
|
|
OBJS-$(CONFIG_NEON_CLOBBER_TEST) += aarch64/neontest.o
|
|
OBJS-$(CONFIG_PIXBLOCKDSP) += aarch64/pixblockdsp_init_aarch64.o
|
|
OBJS-$(CONFIG_APNG_DECODER) += aarch64/pngdsp_init.o
|
|
OBJS-$(CONFIG_LSCR_DECODER) += aarch64/pngdsp_init.o
|
|
OBJS-$(CONFIG_PNG_DECODER) += aarch64/pngdsp_init.o
|
|
OBJS-$(CONFIG_VIDEODSP) += aarch64/videodsp_init.o
|
|
OBJS-$(CONFIG_VP8DSP) += aarch64/vp8dsp_init_aarch64.o
|
|
|
|
# decoders/encoders
|
|
OBJS-$(CONFIG_AAC_DECODER) += aarch64/aacpsdsp_init_aarch64.o \
|
|
aarch64/sbrdsp_init_aarch64.o
|
|
OBJS-$(CONFIG_AAC_ENCODER) += aarch64/aacencdsp_init.o
|
|
OBJS-$(CONFIG_APV_DECODER) += aarch64/apv_dsp_init_aarch64.o
|
|
OBJS-$(CONFIG_BITPACKED_DECODER) += aarch64/bitpacked_init_aarch64.o
|
|
OBJS-$(CONFIG_DCA_DECODER) += aarch64/dcadsp_init_aarch64.o \
|
|
aarch64/synth_filter_init.o
|
|
OBJS-$(CONFIG_OPUS_DECODER) += aarch64/opusdsp_init.o
|
|
OBJS-$(CONFIG_RV40_DECODER) += aarch64/rv40dsp_init_aarch64.o
|
|
OBJS-$(CONFIG_VC1DSP) += aarch64/vc1dsp_init_aarch64.o
|
|
OBJS-$(CONFIG_VORBIS_DECODER) += aarch64/vorbisdsp_init.o
|
|
OBJS-$(CONFIG_VP9_DECODER) += aarch64/vp9dsp_init_10bpp_aarch64.o \
|
|
aarch64/vp9dsp_init_12bpp_aarch64.o \
|
|
aarch64/vp9mc_aarch64.o \
|
|
aarch64/vp9dsp_init_aarch64.o
|
|
|
|
# ARMv8 optimizations
|
|
|
|
# subsystems
|
|
ARMV8-OBJS-$(CONFIG_VIDEODSP) += aarch64/videodsp.o
|
|
|
|
# NEON optimizations
|
|
|
|
# subsystems
|
|
NEON-OBJS-$(CONFIG_AAC_DECODER) += aarch64/sbrdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_AAC_ENCODER) += aarch64/aacencdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_AC3DSP) += aarch64/ac3dsp_neon.o
|
|
NEON-OBJS-$(CONFIG_AUDIODSP) += aarch64/audiodsp_neon.o
|
|
NEON-OBJS-$(CONFIG_FDCTDSP) += aarch64/fdctdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_H264CHROMA) += aarch64/h264cmc_neon.o
|
|
NEON-OBJS-$(CONFIG_H264DSP) += aarch64/h264dsp_neon.o \
|
|
aarch64/h264idct_neon.o
|
|
NEON-OBJS-$(CONFIG_H264PRED) += aarch64/h264pred_neon.o
|
|
NEON-OBJS-$(CONFIG_H264QPEL) += aarch64/h264qpel_neon.o \
|
|
aarch64/hpeldsp_neon.o
|
|
NEON-OBJS-$(CONFIG_HPELDSP) += aarch64/hpeldsp_neon.o
|
|
NEON-OBJS-$(CONFIG_HUFFYUVDSP) += aarch64/huffyuvdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_IDCTDSP) += aarch64/idctdsp_neon.o \
|
|
aarch64/simple_idct_neon.o
|
|
NEON-OBJS-$(CONFIG_LLVIDDSP) += aarch64/lossless_videodsp_neon.o
|
|
NEON-OBJS-$(CONFIG_ME_CMP) += aarch64/me_cmp_neon.o
|
|
NEON-OBJS-$(CONFIG_MPEGAUDIODSP) += aarch64/mpegaudiodsp_neon.o
|
|
NEON-OBJS-$(CONFIG_MPEGVIDEOENCDSP) += aarch64/mpegvideoencdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_PIXBLOCKDSP) += aarch64/pixblockdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_APNG_DECODER) += aarch64/pngdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_LSCR_DECODER) += aarch64/pngdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_PNG_DECODER) += aarch64/pngdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_VC1DSP) += aarch64/vc1dsp_neon.o
|
|
NEON-OBJS-$(CONFIG_VP8DSP) += aarch64/vp8dsp_neon.o
|
|
|
|
# decoders/encoders
|
|
NEON-OBJS-$(CONFIG_AAC_DECODER) += aarch64/aacpsdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_APV_DECODER) += aarch64/apv_dsp_neon.o
|
|
NEON-OBJS-$(CONFIG_BITPACKED_DECODER) += aarch64/bitpacked_neon.o
|
|
NEON-OBJS-$(CONFIG_DCA_DECODER) += aarch64/dcadsp_neon.o \
|
|
aarch64/synth_filter_neon.o
|
|
NEON-OBJS-$(CONFIG_OPUS_DECODER) += aarch64/opusdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_VORBIS_DECODER) += aarch64/vorbisdsp_neon.o
|
|
NEON-OBJS-$(CONFIG_VP9_DECODER) += aarch64/vp9itxfm_16bpp_neon.o \
|
|
aarch64/vp9itxfm_neon.o \
|
|
aarch64/vp9lpf_16bpp_neon.o \
|
|
aarch64/vp9lpf_neon.o \
|
|
aarch64/vp9mc_16bpp_neon.o \
|
|
aarch64/vp9mc_neon.o
|
|
NEON-OBJS-$(CONFIG_HEVC_DECODER) += aarch64/hevcdsp_deblock_neon.o \
|
|
aarch64/hevcdsp_dequant_neon.o \
|
|
aarch64/hevcdsp_idct_neon.o \
|
|
aarch64/hevcdsp_init_aarch64.o \
|
|
aarch64/hevcpred_neon.o \
|
|
aarch64/hevcpred_init_aarch64.o \
|
|
aarch64/h26x/epel_neon.o \
|
|
aarch64/h26x/qpel_neon.o \
|
|
aarch64/h26x/sao_neon.o
|