146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* 246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Header definitions for the MMX routines for the HERMES library 346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Copyright (c) 1998 Christian Nentwich (c.nentwich@cs.ucl.ac.uk) 446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner This source code is licensed under the GNU LGPL 546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Please refer to the file COPYING.LIB contained in the distribution for 746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner licensing conditions 846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/ 946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_config.h" 1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifndef __HERMES_HEAD_MMX__ 1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define __HERMES_HEAD_MMX__ 1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* If you cannot stand ifdefs, then please do not look into this file, it's 1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner going to end your life :) */ 1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef X86_ASSEMBLER 1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef __cplusplus 2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern "C" { 2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif 2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ConvertMMX(HermesConverterInterface *); 2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearMMX_32(HermesClearInterface *); 2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearMMX_24(HermesClearInterface *); 2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearMMX_16(HermesClearInterface *); 3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearMMX_8(HermesClearInterface *); 3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertMMXpII32_24RGB888(); 3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertMMXpII32_16RGB565(); 3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertMMXpII32_16BGR565(); 3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertMMXpII32_16RGB555(); 3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertMMXpII32_16BGR565(); 3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertMMXpII32_16BGR555(); 3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertMMXp32_16RGB555(); 4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef __cplusplus 4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner} 4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif 4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Fix the underscore business with ELF compilers */ 4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#if defined(__ELF__) && defined(__GNUC__) 5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #ifdef __cplusplus 5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern "C" { 5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #endif 5346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 5446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertMMX(HermesConverterInterface *); 5546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertMMXpII32_24RGB888(); 5646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertMMXpII32_16RGB565(); 5746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertMMXpII32_16BGR565(); 5846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertMMXpII32_16RGB555(); 5946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertMMXpII32_16BGR555(); 6046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 6146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertMMX _ConvertMMX 6246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertMMXpII32_24RGB888 _ConvertMMXpII32_24RGB888 6346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertMMXpII32_16RGB565 _ConvertMMXpII32_16RGB565 6446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertMMXpII32_16BGR565 _ConvertMMXpII32_16BGR565 6546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertMMXpII32_16RGB555 _ConvertMMXpII32_16RGB555 6646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertMMXpII32_16BGR555 _ConvertMMXpII32_16BGR555 6746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 6846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #ifdef __cplusplus 6946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner } 7046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #endif 7146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* ELF and GNUC */ 7346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Make it work with Watcom */ 7846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef __WATCOMC__ 7946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma warning 601 9 8046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertMMX "_*" modify [EAX EBX ECX EDX ESI EDI] 8246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearMMX_32 "_*" modify [EAX EBX ECX EDX ESI EDI] 8446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearMMX_24 "_*" modify [EAX EBX ECX EDX ESI EDI] 8546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearMMX_16 "_*" modify [EAX EBX ECX EDX ESI EDI] 8646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearMMX_8 "_*" modify [EAX EBX ECX EDX ESI EDI] 8746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertMMXpII32_24RGB888 "_*" 8946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertMMXpII32_16RGB565 "_*" 9046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertMMXpII32_16BGR565 "_*" 9146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertMMXpII32_16RGB555 "_*" 9246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertMMXpII32_16BGR555 "_*" 9346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertMMXp32_16RGB555 "_*" 9446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* WATCOM */ 9646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* X86_ASSEMBLER */ 9846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 10046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif 101