1 /* 2 Header definitions for the MMX routines for the HERMES library 3 Copyright (c) 1998 Christian Nentwich (c.nentwich (at) 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 22 extern "C" { 23 #endif 24 25 void STACKCALL ConvertMMX(HermesConverterInterface *); 26 27 void STACKCALL ClearMMX_32(HermesClearInterface *); 28 void STACKCALL ClearMMX_24(HermesClearInterface *); 29 void STACKCALL ClearMMX_16(HermesClearInterface *); 30 void STACKCALL ClearMMX_8(HermesClearInterface *); 31 32 void ConvertMMXpII32_24RGB888(); 33 void ConvertMMXpII32_16RGB565(); 34 void ConvertMMXpII32_16BGR565(); 35 void ConvertMMXpII32_16RGB555(); 36 void ConvertMMXpII32_16BGR565(); 37 void ConvertMMXpII32_16BGR555(); 38 39 void 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