• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
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__)
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