1/* 2 Header definitions for the MMX routines for the HERMES library 3 Copyright (c) 1998 Christian Nentwich (c.nentwich@cs.ucl.ac.uk) 4 This source code is licensed under the GNU LGPL 5 6 Please refer to the file COPYING.LIB contained in the distribution for 7 licensing conditions 8*/ 9#include "SDL_config.h" 10 11#ifndef __HERMES_HEAD_MMX__ 12#define __HERMES_HEAD_MMX__ 13 14 15/* If you cannot stand ifdefs, then please do not look into this file, it's 16 going to end your life :) */ 17 18#ifdef X86_ASSEMBLER 19 20 21#ifdef __cplusplus 22extern "C" { 23#endif 24 25void STACKCALL ConvertMMX(HermesConverterInterface *); 26 27void STACKCALL ClearMMX_32(HermesClearInterface *); 28void STACKCALL ClearMMX_24(HermesClearInterface *); 29void STACKCALL ClearMMX_16(HermesClearInterface *); 30void STACKCALL ClearMMX_8(HermesClearInterface *); 31 32void ConvertMMXpII32_24RGB888(); 33void ConvertMMXpII32_16RGB565(); 34void ConvertMMXpII32_16BGR565(); 35void ConvertMMXpII32_16RGB555(); 36void ConvertMMXpII32_16BGR565(); 37void ConvertMMXpII32_16BGR555(); 38 39void ConvertMMXp32_16RGB555(); 40 41#ifdef __cplusplus 42} 43#endif 44 45 46 47/* Fix the underscore business with ELF compilers */ 48 49#if (defined(__ELF__) && defined(__GNUC__)) || defined(__SUNPRO_C) 50 #ifdef __cplusplus 51 extern "C" { 52 #endif 53 54 extern void _ConvertMMX(HermesConverterInterface *); 55 extern void _ConvertMMXpII32_24RGB888(); 56 extern void _ConvertMMXpII32_16RGB565(); 57 extern void _ConvertMMXpII32_16BGR565(); 58 extern void _ConvertMMXpII32_16RGB555(); 59 extern void _ConvertMMXpII32_16BGR555(); 60 61 #define ConvertMMX _ConvertMMX 62 #define ConvertMMXpII32_24RGB888 _ConvertMMXpII32_24RGB888 63 #define ConvertMMXpII32_16RGB565 _ConvertMMXpII32_16RGB565 64 #define ConvertMMXpII32_16BGR565 _ConvertMMXpII32_16BGR565 65 #define ConvertMMXpII32_16RGB555 _ConvertMMXpII32_16RGB555 66 #define ConvertMMXpII32_16BGR555 _ConvertMMXpII32_16BGR555 67 68 #ifdef __cplusplus 69 } 70 #endif 71 72#endif /* ELF and GNUC */ 73 74 75 76 77/* Make it work with Watcom */ 78#ifdef __WATCOMC__ 79#pragma warning 601 9 80 81#pragma aux ConvertMMX "_*" modify [EAX EBX ECX EDX ESI EDI] 82 83#pragma aux ClearMMX_32 "_*" modify [EAX EBX ECX EDX ESI EDI] 84#pragma aux ClearMMX_24 "_*" modify [EAX EBX ECX EDX ESI EDI] 85#pragma aux ClearMMX_16 "_*" modify [EAX EBX ECX EDX ESI EDI] 86#pragma aux ClearMMX_8 "_*" modify [EAX EBX ECX EDX ESI EDI] 87 88#pragma aux ConvertMMXpII32_24RGB888 "_*" 89#pragma aux ConvertMMXpII32_16RGB565 "_*" 90#pragma aux ConvertMMXpII32_16BGR565 "_*" 91#pragma aux ConvertMMXpII32_16RGB555 "_*" 92#pragma aux ConvertMMXpII32_16BGR555 "_*" 93#pragma aux ConvertMMXp32_16RGB555 "_*" 94 95#endif /* WATCOM */ 96 97#endif /* X86_ASSEMBLER */ 98 99 100#endif 101