]> git.sesse.net Git - vlc/blobdiff - modules/misc/memcpy/memcpyaltivec.c
Add vlclua_dir_list_free to free list created by vlclua_dir_list and use it.
[vlc] / modules / misc / memcpy / memcpyaltivec.c
index 25d4ff28a10bb662668355e599186ca0196c01ea..d1c7fb5404dd52e38914d4f283846900c2248ec8 100644 (file)
@@ -1,16 +1,16 @@
 /*****************************************************************************
  * memcpyaltivec.c : AltiVec memcpy module
  *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: memcpyaltivec.c,v 1.1 2002/08/04 17:23:43 sam Exp $
+ * Copyright (C) 2001 the VideoLAN team
+ * $Id$
  *
- * Authors: Christophe Massiot <massiot@via.ecp.fr>
+ * Author: Christophe Massiot <massiot@via.ecp.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program 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
@@ -18,7 +18,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #ifndef __BUILD_ALTIVEC_ASM__
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
-#include <stdlib.h>
-#include <string.h>
 
-#include <vlc/vlc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
+
+#ifdef HAVE_ALTIVEC_H
+#   include <altivec.h>
+#endif
 
 /*****************************************************************************
  * Local prototypes.
@@ -41,7 +48,7 @@ static void * fast_memcpy ( void * to, const void * from, size_t len );
  *****************************************************************************/
 static int Activate ( vlc_object_t *p_this )
 {
-    p_this->p_vlc->pf_memcpy = fast_memcpy;
+    vlc_fastmem_register( fast_memcpy, NULL );
     return VLC_SUCCESS;
 }
 
@@ -49,7 +56,10 @@ static int Activate ( vlc_object_t *p_this )
  * Module descriptor.
  *****************************************************************************/
 vlc_module_begin();
-    set_description( _("AltiVec memcpy module") );
+    set_description( N_("AltiVec memcpy") );
+    set_category( CAT_ADVANCED );
+    set_subcategory( SUBCAT_ADVANCED_MISC );
+    add_requirement( ALTIVEC );
     set_capability( "memcpy", 100 );
     set_callbacks( Activate, NULL );
     add_shortcut( "altivec" );
@@ -149,63 +159,63 @@ static void * fast_memcpy( void * _to, const void * _from, size_t len )
 
 static void * fast_memcpy( void * _to, const void * _from, size_t len )
 {
-    asm ("                                              \n"                     
-       "       cmplwi          %cr0, %r5,  16          \n"
-       "       mr              %r9,  %r3               \n"
-       "       bc              4,    1,    ._L3        \n"
-       "       andi.           %r0,  %r3,  15          \n"
-       "       bc              12,   2,    ._L4        \n"
-       "       subfic          %r0,  %r0,  16          \n"
-       "       add             %r11, %r3,  %r0         \n"
-       "       cmplw           %cr0, %r3,  %r11        \n"
-       "       subf            %r5,  %r0,  %r5         \n"
-       "       bc              4,    0,    ._L4        \n"
-       "       ._L7:                                   \n"
-       "       lbz             %r0,  0(%r4)            \n"
-       "       stb             %r0,  0(%r9)            \n"
-       "       addi            %r9,  %r9,  1           \n"
-       "       cmplw           %cr0, %r9,  %r11        \n"
-       "       addi            %r4,  %r4,  1           \n"
-       "       bc              12,   0,    ._L7        \n"
-       "       ._L4:                                   \n"
-       "       rlwinm.         %r0,  %r5,  0,    0,    27    \n"
-       "       bc              12,   2,    ._L3        \n"
-       "       addi            %r5,  %r5,  -16         \n"
-       "       li              %r11, 15                \n"
-       "       lvsl            %v12, 0,    %r4         \n"
-       "       lvx             %v1,  0,    %r4         \n"
-       "       lvx             %v0,  %r11, %r4         \n"
-       "       rlwinm.         %r0,  %r5,  0,    0,    27    \n"
-       "       vperm           %v13, %v1,  %v0,  %v12  \n"
-       "       addi            %r4,  %r4,  16          \n"
-       "       bc              12,   2,    ._L11       \n"
-       "       ._L12:                                  \n"
-       "       addi            %r5,  %r5,  -16         \n"
-       "       li              %r11, 15                \n"
-       "       lvx             %v1,  0,    %r4         \n"
-       "       lvx             %v0,  %r11, %r4         \n"
-       "       rlwinm.         %r0,  %r5,  0,    0,    27    \n"
-       "       stvx            %v13, 0,    %r9         \n"
-       "       vperm           %v13, %v1,  %v0,  %v12  \n"
-       "       addi            %r4,  %r4,  16          \n"
-       "       addi            %r9,  %r9,  16          \n"
-       "       bc              4,    2,    ._L12       \n"
-       "       ._L11:                                  \n"
-       "       stvx            %v13, 0,    %r9         \n"
-       "       addi            %r9,  %r9,  16          \n"
-       "       ._L3:                                   \n"
-       "       cmpwi           %cr0, %r5,  0           \n"
-       "       bclr            12,   2                 \n"
-       "       add             %r5,  %r9,  %r5         \n"
-       "       cmplw           %cr0, %r9,  %r5         \n"
-       "       bclr            4,    0                 \n"
-       "       ._L17:                                  \n"
-       "       lbz             %r0,  0(%r4)            \n"
-       "       stb             %r0,  0(%r9)            \n"
-       "       addi            %r9,  %r9,  1           \n"
-       "       cmplw           %cr0, %r9,  %r5         \n"
-       "       addi            %r4,  %r4,  1           \n"
-       "       bc              12,   0,    ._L17       \n"
+    asm ("                                              \n"
+    "    cmplwi        %cr0, %r5,  16        \n"
+    "    mr        %r9,  %r3        \n"
+    "    bc        4,    1,    ._L3    \n"
+    "    andi.        %r0,  %r3,  15        \n"
+    "    bc        12,   2,    ._L4    \n"
+    "    subfic        %r0,  %r0,  16        \n"
+    "    add        %r11, %r3,  %r0        \n"
+    "    cmplw        %cr0, %r3,  %r11    \n"
+    "    subf        %r5,  %r0,  %r5        \n"
+    "    bc        4,    0,    ._L4    \n"
+    "    ._L7:                    \n"
+    "    lbz        %r0,  0(%r4)        \n"
+    "    stb        %r0,  0(%r9)        \n"
+    "    addi        %r9,  %r9,  1        \n"
+    "    cmplw        %cr0, %r9,  %r11    \n"
+    "    addi        %r4,  %r4,  1        \n"
+    "    bc        12,   0,    ._L7    \n"
+    "    ._L4:                    \n"
+    "    rlwinm.        %r0,  %r5,  0,      0,    27    \n"
+    "    bc        12,   2,    ._L3    \n"
+    "    addi        %r5,  %r5,  -16        \n"
+    "    li        %r11, 15        \n"
+    "    lvsl        %v12, 0,    %r4        \n"
+    "    lvx        %v1,  0,    %r4        \n"
+    "    lvx        %v0,  %r11, %r4        \n"
+    "    rlwinm.        %r0,  %r5,  0,      0,    27    \n"
+    "    vperm        %v13, %v1,  %v0,  %v12    \n"
+    "    addi        %r4,  %r4,  16        \n"
+    "    bc        12,   2,    ._L11    \n"
+    "    ._L12:                    \n"
+    "    addi        %r5,  %r5,  -16        \n"
+    "    li        %r11, 15        \n"
+    "    lvx        %v1,  0,    %r4        \n"
+    "    lvx        %v0,  %r11, %r4        \n"
+    "    rlwinm.        %r0,  %r5,  0,      0,    27    \n"
+    "    stvx        %v13, 0,    %r9        \n"
+    "    vperm        %v13, %v1,  %v0,  %v12    \n"
+    "    addi        %r4,  %r4,  16        \n"
+    "    addi        %r9,  %r9,  16        \n"
+    "    bc        4,    2,    ._L12    \n"
+    "    ._L11:                    \n"
+    "    stvx        %v13, 0,    %r9        \n"
+    "    addi        %r9,  %r9,  16        \n"
+    "    ._L3:                    \n"
+    "    cmpwi        %cr0, %r5,  0        \n"
+    "    bclr        12,   2            \n"
+    "    add        %r5,  %r9,  %r5        \n"
+    "    cmplw        %cr0, %r9,  %r5        \n"
+    "    bclr        4,    0            \n"
+    "    ._L17:                    \n"
+    "    lbz        %r0,  0(%r4)        \n"
+    "    stb        %r0,  0(%r9)        \n"
+    "    addi        %r9,  %r9,  1        \n"
+    "    cmplw        %cr0, %r9,  %r5        \n"
+    "    addi        %r4,  %r4,  1        \n"
+    "    bc        12,   0,    ._L17    \n"
         );
 }