--- mem_transfer.h 2004/04/05 20:36:37 1.14 +++ mem_transfer.h 2005/09/13 12:12:15 1.17 @@ -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.14 2004/04/05 20:36:37 edgomez Exp $ + * $Id: mem_transfer.h,v 1.17 2005/09/13 12:12:15 suxen_drol Exp $ * ****************************************************************************/ @@ -55,6 +55,10 @@ extern TRANSFER_8TO16COPY transfer_8to16copy_altivec_c; #endif +#ifdef ARCH_IS_X86_64 +extern TRANSFER_8TO16COPY transfer_8to16copy_x86_64; +#endif + /***************************************************************************** * transfer16to8 API ****************************************************************************/ @@ -83,6 +87,10 @@ 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 ****************************************************************************/ @@ -113,6 +121,10 @@ 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 ****************************************************************************/ @@ -139,6 +151,10 @@ 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 ****************************************************************************/ @@ -171,6 +187,36 @@ 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 ****************************************************************************/ @@ -200,6 +246,10 @@ extern TRANSFER_16TO8ADD transfer_16to8add_altivec_c; #endif +#ifdef ARCH_IS_X86_64 +extern TRANSFER_16TO8ADD transfer_16to8add_x86_64; +#endif + /***************************************************************************** * transfer8to8 + no op ****************************************************************************/ @@ -229,6 +279,32 @@ 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; + +#ifdef ARCH_IS_IA32 +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,