diff options
author | Timothy Gu <timothygu99@gmail.com> | 2014-03-28 02:37:51 +0100 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2014-04-11 12:09:09 +0200 |
commit | 71c32ed5335add04cbe44896f4b3d748b9b1153c (patch) | |
tree | 544a861919f08a3e168077b4ff2cd4d708550c9b /libavcodec/x86/dnxhdenc.asm | |
parent | 676856204b84dfaffe329dce8502e834a0dbdb19 (diff) | |
download | ffmpeg-71c32ed5335add04cbe44896f4b3d748b9b1153c.tar.gz |
DNxHD: convert inline asm to yasm
Diffstat (limited to 'libavcodec/x86/dnxhdenc.asm')
-rw-r--r-- | libavcodec/x86/dnxhdenc.asm | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/libavcodec/x86/dnxhdenc.asm b/libavcodec/x86/dnxhdenc.asm new file mode 100644 index 0000000000..d39b07b9f4 --- /dev/null +++ b/libavcodec/x86/dnxhdenc.asm @@ -0,0 +1,49 @@ +;************************************************************************ +;* VC3/DNxHD SIMD functions +;* Copyright (c) 2007 Baptiste Coudurier <baptiste dot coudurier at smartjog dot com> +;* Copyright (c) 2014 Tiancheng "Timothy" Gu <timothygu99@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 +;* 51, Inc., Foundation Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +;****************************************************************************** + +%include "libavutil/x86/x86util.asm" + +section .text + +; void get_pixels_8x4_sym_sse2(int16_t *block, const uint8_t *pixels, +; ptrdiff_t line_size) +INIT_XMM sse2 +cglobal get_pixels_8x4_sym, 3,3,5, block, pixels, linesize + pxor m4, m4 + movq m0, [pixelsq] + add pixelsq, linesizeq + movq m1, [pixelsq] + movq m2, [pixelsq+linesizeq] + movq m3, [pixelsq+linesizeq*2] + punpcklbw m0, m4 + punpcklbw m1, m4 + punpcklbw m2, m4 + punpcklbw m3, m4 + mova [blockq ], m0 + mova [blockq+16 ], m1 + mova [blockq+32 ], m2 + mova [blockq+48 ], m3 + mova [blockq+64 ], m3 + mova [blockq+80 ], m2 + mova [blockq+96 ], m1 + mova [blockq+112], m0 + RET |