fixed_dsp.asm (1693B)
1 ;***************************************************************************** 2 ;* x86-optimized Float DSP functions 3 ;* 4 ;* Copyright 2016 James Almer 5 ;* 6 ;* This file is part of FFmpeg. 7 ;* 8 ;* FFmpeg is free software; you can redistribute it and/or 9 ;* modify it under the terms of the GNU Lesser General Public 10 ;* License as published by the Free Software Foundation; either 11 ;* version 2.1 of the License, or (at your option) any later version. 12 ;* 13 ;* FFmpeg is distributed in the hope that it will be useful, 14 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of 15 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 ;* Lesser General Public License for more details. 17 ;* 18 ;* You should have received a copy of the GNU Lesser General Public 19 ;* License along with FFmpeg; if not, write to the Free Software 20 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 ;****************************************************************************** 22 23 %include "libavutil/x86/x86util.asm" 24 25 SECTION .text 26 27 ;----------------------------------------------------------------------------- 28 ; void ff_butterflies_fixed(float *src0, float *src1, int len); 29 ;----------------------------------------------------------------------------- 30 INIT_XMM sse2 31 cglobal butterflies_fixed, 3,3,3, src0, src1, len 32 shl lend, 2 33 add src0q, lenq 34 add src1q, lenq 35 neg lenq 36 37 align 16 38 .loop: 39 mova m0, [src0q + lenq] 40 mova m1, [src1q + lenq] 41 mova m2, m0 42 paddd m0, m1 43 psubd m2, m1 44 mova [src0q + lenq], m0 45 mova [src1q + lenq], m2 46 add lenq, mmsize 47 jl .loop 48 RET