• Lynne's avatar
    x86/opusdsp: implement FMA3 accelerated postfilter and deemphasis · 605e3303
    Lynne authored
    58893 decicycles in deemphasis_c,  130548 runs,    524 skips
    9475 decicycles in deemphasis_fma3,  130686 runs,    386 skips -> 6.21x speedup
    
    24866 decicycles in postfilter_c,   65386 runs,    150 skips
    5268 decicycles in postfilter_fma3,   65505 runs,     31 skips -> 4.72x speedup
    
    Total decoder speedup: ~14%
    
    Deemphasis SIMD based on the following unrolling:
    const float c1 = CELT_EMPH_COEFF, c2 = c1*c1, c3 = c2*c1, c4 = c3*c1;
    float state = coeff;
    
    for (int i = 0; i < len; i += 4) {
        y[0] = x[0] + c1*state;
        y[1] = x[1] + c2*state + c1*x[0];
        y[2] = x[2] + c3*state + c1*x[1] + c2*x[0];
        y[3] = x[3] + c4*state + c1*x[2] + c2*x[1] + c3*x[0];
    
        state = y[3];
        y += 4;
        x += 4;
    }
    605e3303
Name
Last commit
Last update
..
Makefile Loading commit data...
aacencdsp.asm Loading commit data...
aacencdsp_init.c Loading commit data...
aacpsdsp.asm Loading commit data...
aacpsdsp_init.c Loading commit data...
ac3dsp.asm Loading commit data...
ac3dsp_downmix.asm Loading commit data...
ac3dsp_init.c Loading commit data...
alacdsp.asm Loading commit data...
alacdsp_init.c Loading commit data...
audiodsp.asm Loading commit data...
audiodsp_init.c Loading commit data...
blockdsp.asm Loading commit data...
blockdsp_init.c Loading commit data...
bswapdsp.asm Loading commit data...
bswapdsp_init.c Loading commit data...
cabac.h Loading commit data...
cavsdsp.c Loading commit data...
cavsidct.asm Loading commit data...
celt_pvq_init.c Loading commit data...
celt_pvq_search.asm Loading commit data...
constants.c Loading commit data...
constants.h Loading commit data...
dcadsp.asm Loading commit data...
dcadsp_init.c Loading commit data...
dct32.asm Loading commit data...
dct_init.c Loading commit data...
dirac_dwt.asm Loading commit data...
dirac_dwt_init.c Loading commit data...
diracdsp.asm Loading commit data...
diracdsp_init.c Loading commit data...
dnxhdenc.asm Loading commit data...
dnxhdenc_init.c Loading commit data...
exrdsp.asm Loading commit data...
exrdsp_init.c Loading commit data...
fdct.c Loading commit data...
fdct.h Loading commit data...
fdctdsp_init.c Loading commit data...
fft.asm Loading commit data...
fft.h Loading commit data...
fft_init.c Loading commit data...
flac_dsp_gpl.asm Loading commit data...
flacdsp.asm Loading commit data...
flacdsp_init.c Loading commit data...
fmtconvert.asm Loading commit data...
fmtconvert_init.c Loading commit data...
fpel.asm Loading commit data...
fpel.h Loading commit data...
g722dsp.asm Loading commit data...
g722dsp_init.c Loading commit data...
h263_loopfilter.asm Loading commit data...
h263dsp_init.c Loading commit data...
h264_cabac.c Loading commit data...
h264_chromamc.asm Loading commit data...
h264_chromamc_10bit.asm Loading commit data...
h264_deblock.asm Loading commit data...
h264_deblock_10bit.asm Loading commit data...
h264_idct.asm Loading commit data...
h264_idct_10bit.asm Loading commit data...
h264_intrapred.asm Loading commit data...
h264_intrapred_10bit.asm Loading commit data...
h264_intrapred_init.c Loading commit data...
h264_qpel.c Loading commit data...
h264_qpel_10bit.asm Loading commit data...
h264_qpel_8bit.asm Loading commit data...
h264_weight.asm Loading commit data...
h264_weight_10bit.asm Loading commit data...
h264chroma_init.c Loading commit data...
h264dsp_init.c Loading commit data...
hevc_add_res.asm Loading commit data...
hevc_deblock.asm Loading commit data...
hevc_idct.asm Loading commit data...
hevc_mc.asm Loading commit data...
hevc_sao.asm Loading commit data...
hevc_sao_10bit.asm Loading commit data...
hevcdsp.h Loading commit data...
hevcdsp_init.c Loading commit data...
hpeldsp.asm Loading commit data...
hpeldsp.h Loading commit data...
hpeldsp_init.c Loading commit data...
hpeldsp_rnd_template.c Loading commit data...
hpeldsp_vp3.asm Loading commit data...
hpeldsp_vp3_init.c Loading commit data...
huffyuvdsp.asm Loading commit data...
huffyuvdsp_init.c Loading commit data...
huffyuvdsp_template.asm Loading commit data...
huffyuvencdsp.asm Loading commit data...
huffyuvencdsp_init.c Loading commit data...
idctdsp.asm Loading commit data...
idctdsp.h Loading commit data...
idctdsp_init.c Loading commit data...
imdct36.asm Loading commit data...
inline_asm.h Loading commit data...
jpeg2000dsp.asm Loading commit data...
jpeg2000dsp_init.c Loading commit data...
lossless_audiodsp.asm Loading commit data...
lossless_audiodsp_init.c Loading commit data...
lossless_videodsp.asm Loading commit data...
lossless_videodsp_init.c Loading commit data...
lossless_videoencdsp.asm Loading commit data...
lossless_videoencdsp_init.c Loading commit data...
lpc.c Loading commit data...
mathops.h Loading commit data...
mdct15.asm Loading commit data...
mdct15_init.c Loading commit data...
me_cmp.asm Loading commit data...
me_cmp_init.c Loading commit data...
mlpdsp.asm Loading commit data...
mlpdsp_init.c Loading commit data...
mpegaudiodsp.c Loading commit data...
mpegvideo.c Loading commit data...
mpegvideodsp.c Loading commit data...
mpegvideoenc.c Loading commit data...
mpegvideoenc_qns_template.c Loading commit data...
mpegvideoenc_template.c Loading commit data...
mpegvideoencdsp.asm Loading commit data...
mpegvideoencdsp_init.c Loading commit data...
opusdsp.asm Loading commit data...
opusdsp_init.c Loading commit data...
pixblockdsp.asm Loading commit data...
pixblockdsp_init.c Loading commit data...
pngdsp.asm Loading commit data...
pngdsp_init.c Loading commit data...
proresdsp.asm Loading commit data...
proresdsp_init.c Loading commit data...
qpel.asm Loading commit data...
qpeldsp.asm Loading commit data...
qpeldsp_init.c Loading commit data...
rnd_template.c Loading commit data...
rv34dsp.asm Loading commit data...
rv34dsp_init.c Loading commit data...
rv40dsp.asm Loading commit data...
rv40dsp_init.c Loading commit data...
sbcdsp.asm Loading commit data...
sbcdsp_init.c Loading commit data...
sbrdsp.asm Loading commit data...
sbrdsp_init.c Loading commit data...
simple_idct.asm Loading commit data...
simple_idct.h Loading commit data...
simple_idct10.asm Loading commit data...
simple_idct10_template.asm Loading commit data...
snowdsp.c Loading commit data...
svq1enc.asm Loading commit data...
svq1enc_init.c Loading commit data...
synth_filter.asm Loading commit data...
synth_filter_init.c Loading commit data...
takdsp.asm Loading commit data...
takdsp_init.c Loading commit data...
ttadsp.asm Loading commit data...
ttadsp_init.c Loading commit data...
ttaencdsp.asm Loading commit data...
ttaencdsp_init.c Loading commit data...
utvideodsp.asm Loading commit data...
utvideodsp_init.c Loading commit data...
v210-init.c Loading commit data...
v210.asm Loading commit data...
v210enc.asm Loading commit data...
v210enc_init.c Loading commit data...
vc1dsp.h Loading commit data...
vc1dsp_init.c Loading commit data...
vc1dsp_loopfilter.asm Loading commit data...
vc1dsp_mc.asm Loading commit data...
vc1dsp_mmx.c Loading commit data...
videodsp.asm Loading commit data...
videodsp_init.c Loading commit data...
vorbisdsp.asm Loading commit data...
vorbisdsp_init.c Loading commit data...
vp3dsp.asm Loading commit data...
vp3dsp_init.c Loading commit data...
vp56_arith.h Loading commit data...
vp6dsp.asm Loading commit data...
vp6dsp_init.c Loading commit data...
vp8dsp.asm Loading commit data...
vp8dsp_init.c Loading commit data...
vp8dsp_loopfilter.asm Loading commit data...
vp9dsp_init.c Loading commit data...
vp9dsp_init.h Loading commit data...
vp9dsp_init_10bpp.c Loading commit data...
vp9dsp_init_12bpp.c Loading commit data...
vp9dsp_init_16bpp.c Loading commit data...
vp9dsp_init_16bpp_template.c Loading commit data...
vp9intrapred.asm Loading commit data...
vp9intrapred_16bpp.asm Loading commit data...
vp9itxfm.asm Loading commit data...
vp9itxfm_16bpp.asm Loading commit data...
vp9itxfm_template.asm Loading commit data...
vp9lpf.asm Loading commit data...
vp9lpf_16bpp.asm Loading commit data...
vp9mc.asm Loading commit data...
vp9mc_16bpp.asm Loading commit data...
w64xmmtest.c Loading commit data...
xvididct.asm Loading commit data...
xvididct.h Loading commit data...
xvididct_init.c Loading commit data...