Commit 6a701306 authored by Ronald S. Bultje's avatar Ronald S. Bultje Committed by Michael Niedermayer

dsputil: make selectable.

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent b1a9a2c4
...@@ -1510,6 +1510,7 @@ CONFIG_EXTRA=" ...@@ -1510,6 +1510,7 @@ CONFIG_EXTRA="
aandcttables aandcttables
ac3dsp ac3dsp
audio_frame_queue audio_frame_queue
dsputil
error_resilience error_resilience
gcrypt gcrypt
golomb golomb
...@@ -1669,55 +1670,65 @@ log2_deps="!msvcrt" ...@@ -1669,55 +1670,65 @@ log2_deps="!msvcrt"
# subsystems # subsystems
dct_select="rdft" dct_select="rdft"
error_resilience_select="dsputil"
mdct_select="fft" mdct_select="fft"
rdft_select="fft" rdft_select="fft"
mpegaudio_select="mpegaudiodsp" mpegaudio_select="mpegaudiodsp"
mpegaudiodsp_select="dct" mpegaudiodsp_select="dct"
mpegvideo_select="error_resilience videodsp h264chroma" mpegvideo_select="dsputil error_resilience videodsp h264chroma"
mpegvideoenc_select="mpegvideo" mpegvideoenc_select="mpegvideo"
# decoders / encoders # decoders / encoders
aac_decoder_select="mdct sinewin" aac_decoder_select="mdct sinewin"
aac_encoder_select="audio_frame_queue mdct sinewin" aac_encoder_select="audio_frame_queue mdct sinewin"
aac_latm_decoder_select="aac_decoder aac_latm_parser" aac_latm_decoder_select="aac_decoder aac_latm_parser"
ac3_decoder_select="mdct ac3dsp ac3_parser" ac3_decoder_select="mdct ac3dsp ac3_parser dsputil"
ac3_encoder_select="mdct ac3dsp" ac3_encoder_select="mdct ac3dsp dsputil"
ac3_fixed_encoder_select="mdct ac3dsp" ac3_fixed_encoder_select="mdct ac3dsp dsputil"
alac_encoder_select="lpc" alac_encoder_select="lpc"
als_decoder_select="dsputil"
amrnb_decoder_select="lsp" amrnb_decoder_select="lsp"
amrwb_decoder_select="lsp" amrwb_decoder_select="lsp"
amv_encoder_select="aandcttables" amv_encoder_select="aandcttables"
ape_decoder_select="dsputil"
asv_decoder_select="dsputil"
atrac1_decoder_select="mdct sinewin" atrac1_decoder_select="mdct sinewin"
atrac3_decoder_select="mdct" atrac3_decoder_select="mdct"
bink_decoder_select="dsputil"
binkaudio_dct_decoder_select="mdct rdft dct sinewin" binkaudio_dct_decoder_select="mdct rdft dct sinewin"
binkaudio_rdft_decoder_select="mdct rdft sinewin" binkaudio_rdft_decoder_select="mdct rdft sinewin"
cavs_decoder_select="golomb h264chroma mpegvideo videodsp" cavs_decoder_select="dsputil golomb h264chroma mpegvideo videodsp"
cllc_decoder_select="dsputil"
comfortnoise_encoder_select="lpc" comfortnoise_encoder_select="lpc"
cook_decoder_select="mdct sinewin" cook_decoder_select="dsputil mdct sinewin"
cscd_decoder_select="lzo" cscd_decoder_select="lzo"
cscd_decoder_suggest="zlib" cscd_decoder_suggest="zlib"
dca_decoder_select="mdct" dca_decoder_select="mdct"
dirac_decoder_select="dwt golomb videodsp" dirac_decoder_select="dsputil dwt golomb videodsp"
dnxhd_encoder_select="aandcttables mpegvideoenc" dnxhd_decoder_select="dsputil"
dnxhd_encoder_select="aandcttables dsputil mpegvideoenc"
dv_decoder_select="dsputil"
dxa_decoder_select="zlib" dxa_decoder_select="zlib"
eac3_decoder_select="ac3_decoder" eac3_decoder_select="ac3_decoder"
eac3_encoder_select="ac3_encoder" eac3_encoder_select="ac3_encoder"
eamad_decoder_select="aandcttables mpegvideo" eamad_decoder_select="aandcttables dsputil mpegvideo"
eatgq_decoder_select="aandcttables" eatgq_decoder_select="aandcttables"
eatqi_decoder_select="aandcttables mpegvideo" eatqi_decoder_select="aandcttables mpegvideo"
exr_decoder_select="zlib" exr_decoder_select="zlib"
ffv1_decoder_select="golomb rangecoder" ffv1_decoder_select="dsputil golomb rangecoder"
ffv1_encoder_select="rangecoder" ffv1_encoder_select="rangecoder"
ffvhuff_encoder_select="huffman" ffvhuff_encoder_select="huffman"
flac_decoder_select="golomb" flac_decoder_select="golomb"
flac_encoder_select="golomb lpc" flac_encoder_select="dsputil golomb lpc"
flashsv_decoder_select="zlib" flashsv_decoder_select="zlib"
flashsv_encoder_select="zlib" flashsv_encoder_select="zlib"
flashsv2_encoder_select="zlib" flashsv2_encoder_select="zlib"
flashsv2_decoder_select="zlib" flashsv2_decoder_select="zlib"
flv_decoder_select="h263_decoder" flv_decoder_select="h263_decoder"
flv_encoder_select="h263_encoder" flv_encoder_select="h263_encoder"
fraps_decoder_select="huffman" fourxm_decoder_select="dsputil"
fraps_decoder_select="dsputil huffman"
g729_decoder_select="dsputil"
h261_decoder_select="error_resilience mpegvideo" h261_decoder_select="error_resilience mpegvideo"
h261_encoder_select="aandcttables mpegvideoenc" h261_encoder_select="aandcttables mpegvideoenc"
h263_decoder_select="error_resilience h263_parser mpegvideo" h263_decoder_select="error_resilience h263_parser mpegvideo"
...@@ -1725,16 +1736,23 @@ h263_encoder_select="aandcttables mpegvideoenc" ...@@ -1725,16 +1736,23 @@ h263_encoder_select="aandcttables mpegvideoenc"
h263i_decoder_select="h263_decoder" h263i_decoder_select="h263_decoder"
h263p_encoder_select="h263_encoder" h263p_encoder_select="h263_encoder"
h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp" h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
huffyuv_decoder_select="dsputil"
huffyuv_encoder_select="huffman" huffyuv_encoder_select="huffman"
iac_decoder_select="fft mdct sinewin" iac_decoder_select="fft mdct sinewin"
imc_decoder_select="fft mdct sinewin" imc_decoder_select="dsputil fft mdct sinewin"
indeo3_decoder_select="dsputil"
interplayvideo_decoder_select="dsputil"
jpegls_decoder_select="golomb" jpegls_decoder_select="golomb"
jpegls_encoder_select="golomb" jpegls_encoder_select="golomb"
jv_decoder_select="dsputil"
lagarith_decoder_select="dsputil"
ljpeg_encoder_select="aandcttables mpegvideoenc" ljpeg_encoder_select="aandcttables mpegvideoenc"
loco_decoder_select="golomb" loco_decoder_select="golomb"
mdec_decoder_select="error_resilience mpegvideo" mdec_decoder_select="dsputil error_resilience mpegvideo"
mjpeg_encoder_select="aandcttables mpegvideoenc" mimic_decoder_select="dsputil"
mlp_decoder_select="mlp_parser" mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
mlp_decoder_select="dsputil mlp_parser"
motionpixels_decoder_select="dsputil"
mp1_decoder_select="mpegaudio" mp1_decoder_select="mpegaudio"
mp1float_decoder_select="mpegaudio" mp1float_decoder_select="mpegaudio"
mp2_decoder_select="mpegaudio" mp2_decoder_select="mpegaudio"
...@@ -1745,8 +1763,8 @@ mp3adufloat_decoder_select="mpegaudio" ...@@ -1745,8 +1763,8 @@ mp3adufloat_decoder_select="mpegaudio"
mp3float_decoder_select="mpegaudio" mp3float_decoder_select="mpegaudio"
mp3on4_decoder_select="mpegaudio" mp3on4_decoder_select="mpegaudio"
mp3on4float_decoder_select="mpegaudio" mp3on4float_decoder_select="mpegaudio"
mpc7_decoder_select="mpegaudiodsp" mpc7_decoder_select="dsputil mpegaudiodsp"
mpc8_decoder_select="mpegaudiodsp" mpc8_decoder_select="dsputil mpegaudiodsp"
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
mpeg_xvmc_decoder_select="mpegvideo_decoder" mpeg_xvmc_decoder_select="mpegvideo_decoder"
mpeg1video_decoder_select="error_resilience mpegvideo" mpeg1video_decoder_select="error_resilience mpegvideo"
...@@ -1764,13 +1782,15 @@ msmpeg4v3_encoder_select="h263_encoder" ...@@ -1764,13 +1782,15 @@ msmpeg4v3_encoder_select="h263_encoder"
mss2_decoder_select="error_resilience vc1_decoder" mss2_decoder_select="error_resilience vc1_decoder"
nellymoser_decoder_select="mdct sinewin" nellymoser_decoder_select="mdct sinewin"
nellymoser_encoder_select="audio_frame_queue mdct sinewin" nellymoser_encoder_select="audio_frame_queue mdct sinewin"
nuv_decoder_select="lzo" nuv_decoder_select="dsputil lzo"
png_decoder_select="zlib" png_decoder_select="zlib"
png_encoder_select="zlib" png_encoder_select="dsputil zlib"
prores_decoder_select="dsputil"
qcelp_decoder_select="lsp" qcelp_decoder_select="lsp"
qdm2_decoder_select="mdct rdft mpegaudiodsp" qdm2_decoder_select="mdct rdft mpegaudiodsp"
ra_144_encoder_select="audio_frame_queue lpc" ra_144_encoder_select="audio_frame_queue lpc"
ralf_decoder_select="golomb" ralf_decoder_select="golomb"
rtjpeg_decoder_select="dsputil"
rv10_decoder_select="error_resilience h263_decoder" rv10_decoder_select="error_resilience h263_decoder"
rv10_encoder_select="h263_encoder" rv10_encoder_select="h263_encoder"
rv20_decoder_select="error_resilience h263_decoder" rv20_decoder_select="error_resilience h263_decoder"
...@@ -1779,29 +1799,33 @@ rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvi ...@@ -1779,29 +1799,33 @@ rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvi
rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
shorten_decoder_select="golomb" shorten_decoder_select="golomb"
sipr_decoder_select="lsp" sipr_decoder_select="lsp"
snow_decoder_select="dwt h264qpel rangecoder" snow_decoder_select="dsputil dwt h264qpel rangecoder"
snow_encoder_select="aandcttables dwt h264qpel error_resilience mpegvideoenc rangecoder" snow_encoder_select="aandcttables dsputil dwt h264qpel error_resilience mpegvideoenc rangecoder"
sonic_decoder_select="golomb" sonic_decoder_select="golomb"
sonic_encoder_select="golomb" sonic_encoder_select="golomb"
sonic_ls_encoder_select="golomb" sonic_ls_encoder_select="golomb"
svq1_decoder_select="mpegvideo" svq1_decoder_select="dsputil mpegvideo"
svq1_encoder_select="aandcttables mpegvideoenc" svq1_encoder_select="aandcttables dsputil mpegvideoenc"
svq3_decoder_select="error_resilience golomb h264chroma h264dsp h264pred h264qpel mpegvideo videodsp" svq3_decoder_select="error_resilience golomb h264chroma h264dsp h264pred h264qpel mpegvideo videodsp"
svq3_decoder_suggest="zlib" svq3_decoder_suggest="zlib"
tak_decoder_select="dsputil"
theora_decoder_select="vp3_decoder" theora_decoder_select="vp3_decoder"
tiff_decoder_suggest="zlib" tiff_decoder_suggest="zlib"
tiff_encoder_suggest="zlib" tiff_encoder_suggest="zlib"
truehd_decoder_select="mlp_parser" truehd_decoder_select="mlp_parser"
truemotion2_decoder_select="dsputil"
tscc_decoder_select="zlib" tscc_decoder_select="zlib"
twinvq_decoder_select="mdct lsp sinewin" twinvq_decoder_select="mdct lsp sinewin"
utvideo_decoder_select="dsputil"
utvideo_encoder_select="huffman" utvideo_encoder_select="huffman"
vble_decoder_select="dsputil"
vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel" vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel"
vc1image_decoder_select="vc1_decoder" vc1image_decoder_select="vc1_decoder"
vorbis_decoder_select="mdct" vorbis_decoder_select="mdct"
vorbis_encoder_select="mdct" vorbis_encoder_select="mdct"
vp3_decoder_select="vp3dsp videodsp" vp3_decoder_select="dsputil vp3dsp videodsp"
vp5_decoder_select="h264chroma videodsp vp3dsp" vp5_decoder_select="dsputil h264chroma videodsp vp3dsp"
vp6_decoder_select="h264chroma huffman videodsp vp3dsp" vp6_decoder_select="dsputil h264chroma huffman videodsp vp3dsp"
vp6a_decoder_select="vp6_decoder" vp6a_decoder_select="vp6_decoder"
vp6f_decoder_select="vp6_decoder" vp6f_decoder_select="vp6_decoder"
vp8_decoder_select="h264pred videodsp" vp8_decoder_select="h264pred videodsp"
......
...@@ -20,11 +20,8 @@ OBJS = allcodecs.o \ ...@@ -20,11 +20,8 @@ OBJS = allcodecs.o \
bitstream.o \ bitstream.o \
bitstream_filter.o \ bitstream_filter.o \
codec_desc.o \ codec_desc.o \
dsputil.o \
faanidct.o \
fmtconvert.o \ fmtconvert.o \
imgconvert.o \ imgconvert.o \
jrevdct.o \
mathtables.o \ mathtables.o \
options.o \ options.o \
parser.o \ parser.o \
...@@ -32,7 +29,6 @@ OBJS = allcodecs.o \ ...@@ -32,7 +29,6 @@ OBJS = allcodecs.o \
rawdec.o \ rawdec.o \
resample.o \ resample.o \
resample2.o \ resample2.o \
simple_idct.o \
utils.o \ utils.o \
# parts needed for many different codecs # parts needed for many different codecs
...@@ -42,6 +38,9 @@ OBJS-$(CONFIG_AUDIO_FRAME_QUEUE) += audio_frame_queue.o ...@@ -42,6 +38,9 @@ OBJS-$(CONFIG_AUDIO_FRAME_QUEUE) += audio_frame_queue.o
OBJS-$(CONFIG_CRYSTALHD) += crystalhd.o OBJS-$(CONFIG_CRYSTALHD) += crystalhd.o
OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o dct32_float.o OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o dct32_float.o
OBJS-$(CONFIG_DXVA2) += dxva2.o OBJS-$(CONFIG_DXVA2) += dxva2.o
OBJS-$(CONFIG_DSPUTIL) += dsputil.o faanidct.o \
simple_idct.o \
jrevdct.o
OBJS-$(CONFIG_ENCODERS) += faandct.o jfdctfst.o jfdctint.o OBJS-$(CONFIG_ENCODERS) += faandct.o jfdctfst.o jfdctint.o
OBJS-$(CONFIG_ERROR_RESILIENCE) += error_resilience.o OBJS-$(CONFIG_ERROR_RESILIENCE) += error_resilience.o
FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o cos_fixed_tables.o FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o cos_fixed_tables.o
......
...@@ -140,7 +140,8 @@ static void avcodec_init(void) ...@@ -140,7 +140,8 @@ static void avcodec_init(void)
return; return;
initialized = 1; initialized = 1;
ff_dsputil_static_init(); if (CONFIG_DSPUTIL)
ff_dsputil_static_init();
} }
int av_codec_is_encoder(const AVCodec *codec) int av_codec_is_encoder(const AVCodec *codec)
......
OBJS += x86/fmtconvert_init.o OBJS += x86/fmtconvert_init.o \
x86/constants.o
OBJS-$(CONFIG_AAC_DECODER) += x86/sbrdsp_init.o OBJS-$(CONFIG_AAC_DECODER) += x86/sbrdsp_init.o
OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp_init.o OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp_init.o
OBJS-$(CONFIG_CAVS_DECODER) += x86/cavsdsp.o OBJS-$(CONFIG_CAVS_DECODER) += x86/cavsdsp.o
OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc.o OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc.o
OBJS-$(CONFIG_FFT) += x86/fft_init.o OBJS-$(CONFIG_FFT) += x86/fft_init.o
OBJS-$(CONFIG_GPL) += x86/idct_mmx.o ifdef CONFIG_GPL
OBJS-$(CONFIG_DSPUTIL) += x86/idct_mmx.o
endif
OBJS-$(CONFIG_H264CHROMA) += x86/h264chroma_init.o OBJS-$(CONFIG_H264CHROMA) += x86/h264chroma_init.o
OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o OBJS-$(CONFIG_H264DSP) += x86/h264dsp_init.o
OBJS-$(CONFIG_H264PRED) += x86/h264_intrapred_init.o OBJS-$(CONFIG_H264PRED) += x86/h264_intrapred_init.o
...@@ -32,7 +35,7 @@ OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp_init.o ...@@ -32,7 +35,7 @@ OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp_init.o
OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp_init.o OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp_init.o
OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o
MMX-OBJS += x86/dsputil_mmx.o \ MMX-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil_mmx.o \
x86/fdct.o \ x86/fdct.o \
x86/idct_mmx_xvid.o \ x86/idct_mmx_xvid.o \
x86/idct_sse2_xvid.o \ x86/idct_sse2_xvid.o \
...@@ -82,9 +85,10 @@ YASM-OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp.o ...@@ -82,9 +85,10 @@ YASM-OBJS-$(CONFIG_VP3DSP) += x86/vp3dsp.o
YASM-OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp.o YASM-OBJS-$(CONFIG_VP6_DECODER) += x86/vp56dsp.o
YASM-OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp.o YASM-OBJS-$(CONFIG_VP8_DECODER) += x86/vp8dsp.o
YASM-OBJS += x86/dsputil.o \ YASM-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil.o \
x86/deinterlace.o \
x86/fmtconvert.o \
x86/hpeldsp.o \ x86/hpeldsp.o \
x86/mpeg4qpel.o \ x86/mpeg4qpel.o \
x86/qpelbase.o x86/qpelbase.o
YASM-OBJS += x86/deinterlace.o \
x86/fmtconvert.o
/*
* MMX/SSE constants used across x86 dsp optimizations.
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavutil/mem.h"
#include "libavutil/x86/asm.h" // for xmm_reg
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_1) = { 0x0001000100010001ULL, 0x0001000100010001ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_2) = { 0x0002000200020002ULL, 0x0002000200020002ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_3) = { 0x0003000300030003ULL, 0x0003000300030003ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_4) = { 0x0004000400040004ULL, 0x0004000400040004ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_5) = { 0x0005000500050005ULL, 0x0005000500050005ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_8) = { 0x0008000800080008ULL, 0x0008000800080008ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_9) = { 0x0009000900090009ULL, 0x0009000900090009ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_16) = { 0x0010001000100010ULL, 0x0010001000100010ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_18) = { 0x0012001200120012ULL, 0x0012001200120012ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_32) = { 0x0020002000200020ULL, 0x0020002000200020ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_64) = { 0x0040004000400040ULL, 0x0040004000400040ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_0) = { 0x0000000000000000ULL, 0x0000000000000000ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_1) = { 0x0101010101010101ULL, 0x0101010101010101ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_3) = { 0x0303030303030303ULL, 0x0303030303030303ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_80) = { 0x8080808080808080ULL, 0x8080808080808080ULL };
...@@ -41,44 +41,22 @@ ...@@ -41,44 +41,22 @@
DECLARE_ALIGNED(8, const uint64_t, ff_bone) = 0x0101010101010101ULL; DECLARE_ALIGNED(8, const uint64_t, ff_bone) = 0x0101010101010101ULL;
DECLARE_ALIGNED(8, const uint64_t, ff_wtwo) = 0x0002000200020002ULL; DECLARE_ALIGNED(8, const uint64_t, ff_wtwo) = 0x0002000200020002ULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_1) = { 0x0001000100010001ULL, 0x0001000100010001ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_2) = { 0x0002000200020002ULL, 0x0002000200020002ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_3) = { 0x0003000300030003ULL, 0x0003000300030003ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_4) = { 0x0004000400040004ULL, 0x0004000400040004ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_5) = { 0x0005000500050005ULL, 0x0005000500050005ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_8) = { 0x0008000800080008ULL, 0x0008000800080008ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_9) = { 0x0009000900090009ULL, 0x0009000900090009ULL };
DECLARE_ALIGNED(8, const uint64_t, ff_pw_15) = 0x000F000F000F000FULL; DECLARE_ALIGNED(8, const uint64_t, ff_pw_15) = 0x000F000F000F000FULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_16) = { 0x0010001000100010ULL, 0x0010001000100010ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_17) = { 0x0011001100110011ULL, 0x0011001100110011ULL }; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_17) = { 0x0011001100110011ULL, 0x0011001100110011ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_18) = { 0x0012001200120012ULL, 0x0012001200120012ULL };
DECLARE_ALIGNED(8, const uint64_t, ff_pw_20) = 0x0014001400140014ULL; DECLARE_ALIGNED(8, const uint64_t, ff_pw_20) = 0x0014001400140014ULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_27) = { 0x001B001B001B001BULL, 0x001B001B001B001BULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_28) = { 0x001C001C001C001CULL, 0x001C001C001C001CULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_32) = { 0x0020002000200020ULL, 0x0020002000200020ULL };
DECLARE_ALIGNED(8, const uint64_t, ff_pw_42) = 0x002A002A002A002AULL; DECLARE_ALIGNED(8, const uint64_t, ff_pw_42) = 0x002A002A002A002AULL;
DECLARE_ALIGNED(8, const uint64_t, ff_pw_53) = 0x0035003500350035ULL; DECLARE_ALIGNED(8, const uint64_t, ff_pw_53) = 0x0035003500350035ULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_63) = { 0x003F003F003F003FULL, 0x003F003F003F003FULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_64) = { 0x0040004000400040ULL, 0x0040004000400040ULL };
DECLARE_ALIGNED(8, const uint64_t, ff_pw_96) = 0x0060006000600060ULL; DECLARE_ALIGNED(8, const uint64_t, ff_pw_96) = 0x0060006000600060ULL;
DECLARE_ALIGNED(8, const uint64_t, ff_pw_128) = 0x0080008000800080ULL; DECLARE_ALIGNED(8, const uint64_t, ff_pw_128) = 0x0080008000800080ULL;
DECLARE_ALIGNED(8, const uint64_t, ff_pw_255) = 0x00ff00ff00ff00ffULL; DECLARE_ALIGNED(8, const uint64_t, ff_pw_255) = 0x00ff00ff00ff00ffULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_512) = { 0x0200020002000200ULL, 0x0200020002000200ULL }; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_512) = { 0x0200020002000200ULL, 0x0200020002000200ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pw_1019) = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL }; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_1019) = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_0) = { 0x0000000000000000ULL, 0x0000000000000000ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_1) = { 0x0101010101010101ULL, 0x0101010101010101ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_3) = { 0x0303030303030303ULL, 0x0303030303030303ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_4) = { 0x0404040404040404ULL, 0x0404040404040404ULL };
DECLARE_ALIGNED(8, const uint64_t, ff_pb_7) = 0x0707070707070707ULL; DECLARE_ALIGNED(8, const uint64_t, ff_pb_7) = 0x0707070707070707ULL;
DECLARE_ALIGNED(8, const uint64_t, ff_pb_1F) = 0x1F1F1F1F1F1F1F1FULL; DECLARE_ALIGNED(8, const uint64_t, ff_pb_1F) = 0x1F1F1F1F1F1F1F1FULL;
DECLARE_ALIGNED(8, const uint64_t, ff_pb_3F) = 0x3F3F3F3F3F3F3F3FULL; DECLARE_ALIGNED(8, const uint64_t, ff_pb_3F) = 0x3F3F3F3F3F3F3F3FULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_80) = { 0x8080808080808080ULL, 0x8080808080808080ULL };
DECLARE_ALIGNED(8, const uint64_t, ff_pb_81) = 0x8181818181818181ULL; DECLARE_ALIGNED(8, const uint64_t, ff_pb_81) = 0x8181818181818181ULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_A1) = { 0xA1A1A1A1A1A1A1A1ULL, 0xA1A1A1A1A1A1A1A1ULL };
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_F8) = { 0xF8F8F8F8F8F8F8F8ULL, 0xF8F8F8F8F8F8F8F8ULL };
DECLARE_ALIGNED(8, const uint64_t, ff_pb_FC) = 0xFCFCFCFCFCFCFCFCULL; DECLARE_ALIGNED(8, const uint64_t, ff_pb_FC) = 0xFCFCFCFCFCFCFCFCULL;
DECLARE_ALIGNED(16, const xmm_reg, ff_pb_FE) = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL };
DECLARE_ALIGNED(16, const double, ff_pd_1)[2] = { 1.0, 1.0 }; DECLARE_ALIGNED(16, const double, ff_pd_1)[2] = { 1.0, 1.0 };
DECLARE_ALIGNED(16, const double, ff_pd_2)[2] = { 2.0, 2.0 }; DECLARE_ALIGNED(16, const double, ff_pd_2)[2] = { 2.0, 2.0 };
......
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
#include "libavcodec/dsputil.h" #include "libavcodec/dsputil.h"
#include "libavutil/x86/asm.h" #include "libavutil/x86/asm.h"
typedef struct xmm_reg { uint64_t a, b; } xmm_reg;
extern const uint64_t ff_bone; extern const uint64_t ff_bone;
extern const uint64_t ff_wtwo; extern const uint64_t ff_wtwo;
...@@ -41,12 +39,9 @@ extern const uint64_t ff_pw_15; ...@@ -41,12 +39,9 @@ extern const uint64_t ff_pw_15;
extern const xmm_reg ff_pw_16; extern const xmm_reg ff_pw_16;
extern const xmm_reg ff_pw_18; extern const xmm_reg ff_pw_18;
extern const uint64_t ff_pw_20; extern const uint64_t ff_pw_20;
extern const xmm_reg ff_pw_27;
extern const xmm_reg ff_pw_28;
extern const xmm_reg ff_pw_32; extern const xmm_reg ff_pw_32;
extern const uint64_t ff_pw_42; extern const uint64_t ff_pw_42;
extern const uint64_t ff_pw_53; extern const uint64_t ff_pw_53;
extern const xmm_reg ff_pw_63;
extern const xmm_reg ff_pw_64; extern const xmm_reg ff_pw_64;
extern const uint64_t ff_pw_96; extern const uint64_t ff_pw_96;
extern const uint64_t ff_pw_128; extern const uint64_t ff_pw_128;
...@@ -58,10 +53,8 @@ extern const uint64_t ff_pb_7; ...@@ -58,10 +53,8 @@ extern const uint64_t ff_pb_7;
extern const uint64_t ff_pb_1F; extern const uint64_t ff_pb_1F;
extern const uint64_t ff_pb_3F; extern const uint64_t ff_pb_3F;
extern const uint64_t ff_pb_81; extern const uint64_t ff_pb_81;
extern const xmm_reg ff_pb_A1;
extern const xmm_reg ff_pb_F8; extern const xmm_reg ff_pb_F8;
extern const uint64_t ff_pb_FC; extern const uint64_t ff_pb_FC;
extern const xmm_reg ff_pb_FE;
extern const double ff_pd_1[2]; extern const double ff_pd_1[2];
extern const double ff_pd_2[2]; extern const double ff_pd_2[2];
......
...@@ -60,7 +60,7 @@ rnd_rv40_1d_tbl: times 4 dw 0 ...@@ -60,7 +60,7 @@ rnd_rv40_1d_tbl: times 4 dw 0
cextern pw_3 cextern pw_3
cextern pw_4 cextern pw_4
cextern pw_8 cextern pw_8
cextern pw_28 pw_28: times 8 dw 28
cextern pw_32 cextern pw_32
cextern pw_64 cextern pw_64
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
SECTION_RODATA SECTION_RODATA
pb_A1: times 16 db 0xA1
pb_3_1: times 4 db 3, 1 pb_3_1: times 4 db 3, 1
SECTION .text SECTION .text
...@@ -35,7 +36,6 @@ SECTION .text ...@@ -35,7 +36,6 @@ SECTION .text
cextern pb_0 cextern pb_0
cextern pb_1 cextern pb_1
cextern pb_3 cextern pb_3
cextern pb_A1
; expands to [base],...,[base+7*stride] ; expands to [base],...,[base+7*stride]
%define PASS8ROWS(base, base3, stride, stride3) \ %define PASS8ROWS(base, base3, stride, stride3) \
......
...@@ -143,11 +143,15 @@ filter_h6_shuf1: db 0, 5, 1, 6, 2, 7, 3, 8, 4, 9, 5, 10, 6, 11, 7, 12 ...@@ -143,11 +143,15 @@ filter_h6_shuf1: db 0, 5, 1, 6, 2, 7, 3, 8, 4, 9, 5, 10, 6, 11, 7, 12
filter_h6_shuf2: db 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9 filter_h6_shuf2: db 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9
filter_h6_shuf3: db 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11 filter_h6_shuf3: db 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11
pw_256: times 8 dw 256 pw_27: times 8 dw 27
pw_63: times 8 dw 63
pw_256: times 8 dw 256
pw_20091: times 4 dw 20091 pw_20091: times 4 dw 20091
pw_17734: times 4 dw 17734 pw_17734: times 4 dw 17734
pb_4: times 16 db 4
pb_F8: times 16 db 0xF8
pb_FE: times 16 db 0xFE
pb_27_63: times 8 db 27, 63 pb_27_63: times 8 db 27, 63
pb_18_63: times 8 db 18, 63 pb_18_63: times 8 db 18, 63
pb_9_63: times 8 db 9, 63 pb_9_63: times 8 db 9, 63
...@@ -156,15 +160,10 @@ cextern pb_1 ...@@ -156,15 +160,10 @@ cextern pb_1
cextern pw_3 cextern pw_3
cextern pb_3 cextern pb_3
cextern pw_4 cextern pw_4
cextern pb_4
cextern pw_9 cextern pw_9
cextern pw_18 cextern pw_18
cextern pw_27
cextern pw_63
cextern pw_64 cextern pw_64
cextern pb_80 cextern pb_80
cextern pb_F8
cextern pb_FE
SECTION .text SECTION .text
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
#include <stdint.h> #include <stdint.h>
#include "config.h" #include "config.h"
typedef struct xmm_reg { uint64_t a, b; } xmm_reg;
#if ARCH_X86_64 #if ARCH_X86_64
# define OPSIZE "q" # define OPSIZE "q"
# define REG_a "rax" # define REG_a "rax"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment