--- mem_transfer.h 2004/02/07 13:27:46 1.12.2.2 +++ mem_transfer.h 2008/11/26 01:04:34 1.18 @@ -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.12.2.2 2004/02/07 13:27:46 edgomez Exp $ + * $Id: mem_transfer.h,v 1.18 2008/11/26 01:04:34 Isibaar Exp $ * ****************************************************************************/ @@ -42,7 +42,7 @@ /* Implemented functions */ extern TRANSFER_8TO16COPY transfer_8to16copy_c; -#ifdef ARCH_IS_IA32 +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) extern TRANSFER_8TO16COPY transfer_8to16copy_mmx; extern TRANSFER_8TO16COPY transfer_8to16copy_3dne; #endif @@ -51,6 +51,10 @@ extern TRANSFER_8TO16COPY transfer_8to16copy_ia64; #endif +#ifdef ARCH_IS_PPC +extern TRANSFER_8TO16COPY transfer_8to16copy_altivec_c; +#endif + /***************************************************************************** * transfer16to8 API ****************************************************************************/ @@ -66,7 +70,7 @@ /* Implemented functions */ extern TRANSFER_16TO8COPY transfer_16to8copy_c; -#ifdef ARCH_IS_IA32 +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) extern TRANSFER_16TO8COPY transfer_16to8copy_mmx; extern TRANSFER_16TO8COPY transfer_16to8copy_3dne; #endif @@ -75,6 +79,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 ****************************************************************************/ @@ -92,7 +104,7 @@ /* Implemented functions */ extern TRANSFER_8TO16SUB transfer_8to16sub_c; -#ifdef ARCH_IS_IA32 +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) extern TRANSFER_8TO16SUB transfer_8to16sub_mmx; extern TRANSFER_8TO16SUB transfer_8to16sub_3dne; #endif @@ -101,6 +113,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 ****************************************************************************/ @@ -118,11 +138,19 @@ /* Implemented functions */ extern TRANSFER_8TO16SUBRO transfer_8to16subro_c; -#ifdef ARCH_IS_IA32 +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) extern TRANSFER_8TO16SUBRO transfer_8to16subro_mmx; 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,9 +167,9 @@ extern TRANSFER_8TO16SUB2_PTR transfer_8to16sub2; /* Implemented functions */ -extern TRANSFER_8TO16SUB2 transfer_8to16sub2_c; +TRANSFER_8TO16SUB2 transfer_8to16sub2_c; -#ifdef ARCH_IS_IA32 +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) extern TRANSFER_8TO16SUB2 transfer_8to16sub2_mmx; extern TRANSFER_8TO16SUB2 transfer_8to16sub2_xmm; extern TRANSFER_8TO16SUB2 transfer_8to16sub2_3dne; @@ -151,6 +179,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; + +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) +extern TRANSFER_8TO16SUB2RO transfer_8to16sub2ro_xmm; +#endif + +#ifdef ARCH_IS_X86_64 +extern TRANSFER_8TO16SUB2RO transfer_8to16sub2ro_x86_64; +#endif + /***************************************************************************** * transfer16to8 + addition op API ****************************************************************************/ @@ -167,7 +229,7 @@ /* Implemented functions */ extern TRANSFER_16TO8ADD transfer_16to8add_c; -#ifdef ARCH_IS_IA32 +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) extern TRANSFER_16TO8ADD transfer_16to8add_mmx; extern TRANSFER_16TO8ADD transfer_16to8add_3dne; #endif @@ -176,6 +238,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 ****************************************************************************/ @@ -192,7 +262,7 @@ /* Implemented functions */ extern TRANSFER8X8_COPY transfer8x8_copy_c; -#ifdef ARCH_IS_IA32 +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) extern TRANSFER8X8_COPY transfer8x8_copy_mmx; extern TRANSFER8X8_COPY transfer8x8_copy_3dne; #endif @@ -201,6 +271,36 @@ 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 + +/***************************************************************************** + * transfer8to4 + no op + ****************************************************************************/ + +typedef void (TRANSFER8X4_COPY) (uint8_t * const dst, + const uint8_t * const src, + const uint32_t stride); + +typedef TRANSFER8X4_COPY *TRANSFER8X4_COPY_PTR; + +/* Our global function pointer - Initialized in xvid.c */ +extern TRANSFER8X4_COPY_PTR transfer8x4_copy; + +/* Implemented functions */ +extern TRANSFER8X4_COPY transfer8x4_copy_c; + +#if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64) +extern TRANSFER8X4_COPY transfer8x4_copy_mmx; +extern TRANSFER8X4_COPY transfer8x4_copy_3dne; +#endif + + static __inline void transfer16x16_copy(uint8_t * const dst, const uint8_t * const src,