1 ;******************************************************************************
2 ;* optimized bswap buffer functions
3 ;* Copyright (c) 2008 Loren Merritt
4 ;* Copyright (c) 2003-2013 Michael Niedermayer
5 ;* Copyright (c) 2013 Daniel Kang
7 ;* This file is part of FFmpeg.
9 ;* FFmpeg is free software; you can redistribute it and/or
10 ;* modify it under the terms of the GNU Lesser General Public
11 ;* License as published by the Free Software Foundation; either
12 ;* version 2.1 of the License, or (at your option) any later version.
14 ;* FFmpeg is distributed in the hope that it will be useful,
15 ;* but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 ;* Lesser General Public License for more details.
19 ;* You should have received a copy of the GNU Lesser General Public
20 ;* License along with FFmpeg; if not, write to the Free Software
21 ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 ;******************************************************************************
24 %include "libavutil/x86/x86util.asm"
27 pb_bswap32: db 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12
33 ; %1 = aligned/unaligned
47 pshuflw m0, m0, 10110001b
48 pshuflw m1, m1, 10110001b
49 pshufhw m0, m0, 10110001b
50 pshufhw m1, m1, 10110001b
75 pshuflw m0, m0, 10110001b
76 pshufhw m0, m0, 10110001b
87 ; void ff_bswap_buf(uint32_t *dst, const uint32_t *src, int w);
90 cglobal bswap32_buf, 3,4,3
94 cglobal bswap32_buf, 3,4,5