aboutsummaryrefslogtreecommitdiffstats
path: root/libavresample/x86/util.asm
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-04-23 15:04:09 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2012-05-29 15:33:18 -0400
commitc140fb2cbc8e95f2533e51c0e4acf51211cf45cf (patch)
treee7814d889e8880ced8583f901435e29612a7640f /libavresample/x86/util.asm
parent8dfc122719f3e1fa88fa9356a820843e6840df16 (diff)
downloadffmpeg-c140fb2cbc8e95f2533e51c0e4acf51211cf45cf.tar.gz
lavr: add x86-optimized functions for mixing 2 to 1 s16p with float coeffs
Diffstat (limited to 'libavresample/x86/util.asm')
-rw-r--r--libavresample/x86/util.asm34
1 files changed, 34 insertions, 0 deletions
diff --git a/libavresample/x86/util.asm b/libavresample/x86/util.asm
new file mode 100644
index 0000000000..501f662d43
--- /dev/null
+++ b/libavresample/x86/util.asm
@@ -0,0 +1,34 @@
+;******************************************************************************
+;* x86 utility macros for libavresample
+;* Copyright (c) 2012 Justin Ruggles <justin.ruggles@gmail.com>
+;*
+;* This file is part of Libav.
+;*
+;* Libav 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.
+;*
+;* Libav 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 Libav; if not, write to the Free Software
+;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;******************************************************************************
+
+%macro S16_TO_S32_SX 2 ; src/low dst, high dst
+%if cpuflag(sse4)
+ pmovsxwd m%2, m%1
+ psrldq m%1, 8
+ pmovsxwd m%1, m%1
+ SWAP %1, %2
+%else
+ punpckhwd m%2, m%1
+ punpcklwd m%1, m%1
+ psrad m%2, 16
+ psrad m%1, 16
+%endif
+%endmacro