--- mem_transfer.h 2004/03/22 22:36:24 1.13 +++ mem_transfer.h 2005/01/05 23:02:15 1.16 @@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: mem_transfer.h,v 1.13 2004/03/22 22:36:24 edgomez Exp $ + * $Id: mem_transfer.h,v 1.16 2005/01/05 23:02:15 edgomez Exp $ * ****************************************************************************/ @@ -51,6 +51,14 @@ extern TRANSFER_8TO16COPY transfer_8to16copy_ia64; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER_8TO16COPY transfer_8to16copy_altivec_c; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_8TO16COPY transfer_8to16copy_x86_64; +#endif + /***************************************************************************** * transfer16to8 API ****************************************************************************/ @@ -75,6 +83,14 @@ extern TRANSFER_16TO8COPY transfer_16to8copy_ia64; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER_16TO8COPY transfer_16to8copy_altivec_c; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_16TO8COPY transfer_16to8copy_x86_64; +#endif + /***************************************************************************** * transfer8to16 + substraction *writeback* op API ****************************************************************************/ @@ -101,6 +117,14 @@ extern TRANSFER_8TO16SUB transfer_8to16sub_ia64; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER_8TO16SUB transfer_8to16sub_altivec_c; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_8TO16SUB transfer_8to16sub_x86_64; +#endif + /***************************************************************************** * transfer8to16 + substraction *readonly* op API ****************************************************************************/ @@ -123,6 +147,14 @@ extern TRANSFER_8TO16SUBRO transfer_8to16subro_3dne; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER_8TO16SUBRO transfer_8to16subro_altivec_c; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_8TO16SUBRO transfer_8to16subro_x86_64; +#endif + /***************************************************************************** * transfer8to16 + substraction op API - Bidirectionnal Version ****************************************************************************/ @@ -139,7 +171,7 @@ extern TRANSFER_8TO16SUB2_PTR transfer_8to16sub2; /* Implemented functions */ -extern TRANSFER_8TO16SUB2 transfer_8to16sub2_c; +TRANSFER_8TO16SUB2 transfer_8to16sub2_c; #ifdef ARCH_IS_IA32 extern TRANSFER_8TO16SUB2 transfer_8to16sub2_mmx; @@ -151,6 +183,40 @@ extern TRANSFER_8TO16SUB2 transfer_8to16sub2_ia64; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER_8TO16SUB2 transfer_8to16sub2_altivec_c; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_8TO16SUB2 transfer_8to16sub2_x86_64; +#endif + +/***************************************************************************** + * transfer8to16 + substraction op API - Bidirectionnal Version *readonly* + ****************************************************************************/ + +typedef void (TRANSFER_8TO16SUB2RO) (int16_t * const dct, + const uint8_t * const cur, + const uint8_t * ref1, + const uint8_t * ref2, + const uint32_t stride); + +typedef TRANSFER_8TO16SUB2RO *TRANSFER_8TO16SUB2RO_PTR; + +/* Our global function pointer - Initialized in xvid.c */ +extern TRANSFER_8TO16SUB2RO_PTR transfer_8to16sub2ro; + +/* Implemented functions */ +TRANSFER_8TO16SUB2RO transfer_8to16sub2ro_c; + +#ifdef ARCH_IS_IA32 +extern TRANSFER_8TO16SUB2RO transfer_8to16sub2ro_xmm; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_8TO16SUB2RO transfer_8to16sub2ro_x86_64; +#endif + /***************************************************************************** * transfer16to8 + addition op API ****************************************************************************/ @@ -176,6 +242,14 @@ extern TRANSFER_16TO8ADD transfer_16to8add_ia64; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER_16TO8ADD transfer_16to8add_altivec_c; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_16TO8ADD transfer_16to8add_x86_64; +#endif + /***************************************************************************** * transfer8to8 + no op ****************************************************************************/ @@ -201,6 +275,14 @@ extern TRANSFER8X8_COPY transfer8x8_copy_ia64; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER8X8_COPY transfer8x8_copy_altivec_c; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER8X8_COPY transfer8x8_copy_x86_64; +#endif + static __inline void transfer16x16_copy(uint8_t * const dst, const uint8_t * const src,