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