yading@11: ;****************************************************************************** yading@11: ;* x86 utility macros for libavresample yading@11: ;* Copyright (c) 2012 Justin Ruggles yading@11: ;* yading@11: ;* This file is part of Libav. yading@11: ;* yading@11: ;* Libav is free software; you can redistribute it and/or yading@11: ;* modify it under the terms of the GNU Lesser General Public yading@11: ;* License as published by the Free Software Foundation; either yading@11: ;* version 2.1 of the License, or (at your option) any later version. yading@11: ;* yading@11: ;* Libav is distributed in the hope that it will be useful, yading@11: ;* but WITHOUT ANY WARRANTY; without even the implied warranty of yading@11: ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@11: ;* Lesser General Public License for more details. yading@11: ;* yading@11: ;* You should have received a copy of the GNU Lesser General Public yading@11: ;* License along with Libav; if not, write to the Free Software yading@11: ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@11: ;****************************************************************************** yading@11: yading@11: %macro S16_TO_S32_SX 2 ; src/low dst, high dst yading@11: %if cpuflag(sse4) yading@11: pmovsxwd m%2, m%1 yading@11: psrldq m%1, 8 yading@11: pmovsxwd m%1, m%1 yading@11: SWAP %1, %2 yading@11: %else yading@11: mova m%2, m%1 yading@11: punpckhwd m%2, m%2 yading@11: punpcklwd m%1, m%1 yading@11: psrad m%2, 16 yading@11: psrad m%1, 16 yading@11: %endif yading@11: %endmacro yading@11: yading@11: %macro DEINT2_PS 3 ; src0/even dst, src1/odd dst, temp yading@11: shufps m%3, m%1, m%2, q3131 yading@11: shufps m%1, m%2, q2020 yading@11: SWAP %2,%3 yading@11: %endmacro