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