146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* 246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Header definitions for the x86 routines for the HERMES library 346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at) 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 1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifndef __HERMES_HEAD_X86__ 1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define __HERMES_HEAD_X86__ 1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef X86_ASSEMBLER 1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* If you can't stand IFDEFS, then close your eyes now, please :) */ 1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Ok, we start with normal function definitions */ 1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef __cplusplus 2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern "C" { 2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif 2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ConvertX86(HermesConverterInterface *); 2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearX86_32(HermesClearInterface *); 2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearX86_24(HermesClearInterface *); 2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearX86_16(HermesClearInterface *); 2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid STACKCALL ClearX86_8(HermesClearInterface *); 2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerint STACKCALL Hermes_X86_CPU(); 3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_32BGR888(); 3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_32RGBA888(); 3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_32BGRA888(); 3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_24RGB888(); 3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_24BGR888(); 3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_16RGB565(); 3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_16BGR565(); 3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_16RGB555(); 4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_16BGR555(); 4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p32_8RGB332(); 4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_32RGB888(); 4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_32BGR888(); 4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_32RGBA888(); 4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_32BGRA888(); 4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_24RGB888(); 4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_24BGR888(); 4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_16BGR565(); 5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_16RGB555(); 5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_16BGR555(); 5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86p16_8RGB332(); 5346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 5446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid CopyX86p_4byte(); 5546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid CopyX86p_3byte(); 5646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid CopyX86p_2byte(); 5746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid CopyX86p_1byte(); 5846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 5946be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86pI8_32(); 6046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86pI8_24(); 6146be48730333120a7b939116cef075e61c12c703David 'Digit' Turnervoid ConvertX86pI8_16(); 6246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 6346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int ConvertX86p16_32RGB888_LUT_X86[512]; 6446be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int ConvertX86p16_32BGR888_LUT_X86[512]; 6546be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int ConvertX86p16_32RGBA888_LUT_X86[512]; 6646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int ConvertX86p16_32BGRA888_LUT_X86[512]; 6746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 6846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef __cplusplus 6946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner} 7046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif 7146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Now fix up the ELF underscore problem */ 7646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 7746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#if defined(__ELF__) && defined(__GNUC__) 7846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #ifdef __cplusplus 7946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern "C" { 8046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #endif 8146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern int _Hermes_X86_CPU(); 8346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86(HermesConverterInterface *); 8546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 8646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_32BGR888(); 8746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_32RGBA888(); 8846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_32BGRA888(); 8946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_24RGB888(); 9046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_24BGR888(); 9146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_16RGB565(); 9246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_16BGR565(); 9346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_16RGB555(); 9446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_16BGR555(); 9546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p32_8RGB332(); 9646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 9746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p16_16BGR565(); 9846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p16_16RGB555(); 9946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p16_16BGR555(); 10046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner extern void _ConvertX86p16_8RGB332(); 10146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 10246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 10346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define Hermes_X86_CPU _Hermes_X86_CPU 10446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 10546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86 _ConvertX86 10646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 10746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_32BGR888 _ConvertX86p32_32BGR888 10846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_32RGBA888 _ConvertX86p32_32RGBA888 10946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_32BGRA888 _ConvertX86p32_32BGRA888 11046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_24RGB888 _ConvertX86p32_24RGB888 11146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_24BGR888 _ConvertX86p32_24BGR888 11246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_16RGB565 _ConvertX86p32_16RGB565 11346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_16BGR565 _ConvertX86p32_16BGR565 11446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_16RGB555 _ConvertX86p32_16RGB555 11546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_16BGR555 _ConvertX86p32_16BGR555 11646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p32_8RGB332 _ConvertX86p32_8RGB332 11746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 11846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p16_16BGR565 _ConvertX86p16_16BGR565 11946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p16_16RGB555 _ConvertX86p16_16RGB555 12046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p16_16BGR555 _ConvertX86p16_16BGR555 12146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #define ConvertX86p16_8RGB332 _ConvertX86p16_8RGB332 12246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 12346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 12446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #ifdef __cplusplus 12546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner } 12646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner #endif 12746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 12846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* ELF & GNU */ 12946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 13046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 13146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 13246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Make it run with WATCOM C */ 13346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef __WATCOMC__ 13446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma warning 601 9 13546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 13646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux Hermes_X86_CPU "_*" 13746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 13846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI] 13946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI] 14046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI] 14146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI] 14246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI] 14346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 14446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_32BGR888 "_*" 14546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_32RGBA888 "_*" 14646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_32BGRA888 "_*" 14746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_24RGB888 "_*" 14846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_24BGR888 "_*" 14946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_16RGB565 "_*" 15046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_16BGR565 "_*" 15146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_16RGB555 "_*" 15246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_16BGR555 "_*" 15346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p32_8RGB332 "_*" 15446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 15546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32RGB888 "_*" 15646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32BGR888 "_*" 15746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32RGBA888 "_*" 15846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32BGRA888 "_*" 15946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_24RGB888 "_*" 16046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_24BGR888 "_*" 16146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_16BGR565 "_*" 16246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_16RGB555 "_*" 16346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_16BGR555 "_*" 16446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_8RGB332 "_*" 16546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 16646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux CopyX86p_4byte "_*" 16746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux CopyX86p_3byte "_*" 16846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux CopyX86p_2byte "_*" 16946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux CopyX86p_1byte "_*" 17046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 17146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86pI8_32 "_*" 17246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86pI8_24 "_*" 17346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86pI8_16 "_*" 17446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 17546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*" 17646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*" 17746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*" 17846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*" 17946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 18046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* __WATCOMC__ */ 18146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 18246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 18346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* X86_ASSEMBLER */ 18446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 18546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner 18646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif 187