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 "x86util.asm" 24 25SECTION .text 26 27;----------------------------------------------------------------------------- 28; void ff_butterflies_fixed(float *src0, float *src1, int len); 29;----------------------------------------------------------------------------- 30INIT_XMM sse2 31cglobal butterflies_fixed, 3,3,3, src0, src1, len 32 shl lend, 2 33 add src0q, lenq 34 add src1q, lenq 35 neg lenq 36 37align 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 49