SDL-1.2.14
[sdl_omap.git] / src / hermes / HeadX86.h
1 /*
2    Header definitions for the x86 routines for the HERMES library
3    Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at)
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
10 #ifndef __HERMES_HEAD_X86__
11 #define __HERMES_HEAD_X86__
12
13
14 #ifdef X86_ASSEMBLER
15
16 /* If you can't stand IFDEFS, then close your eyes now, please :) */
17
18 /* Ok, we start with normal function definitions */
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23
24 void STACKCALL ConvertX86(HermesConverterInterface *);
25 void STACKCALL ClearX86_32(HermesClearInterface *);
26 void STACKCALL ClearX86_24(HermesClearInterface *);
27 void STACKCALL ClearX86_16(HermesClearInterface *);
28 void STACKCALL ClearX86_8(HermesClearInterface *);
29
30 int STACKCALL Hermes_X86_CPU();
31
32 void ConvertX86p32_32BGR888();
33 void ConvertX86p32_32RGBA888();
34 void ConvertX86p32_32BGRA888();
35 void ConvertX86p32_24RGB888();
36 void ConvertX86p32_24BGR888();
37 void ConvertX86p32_16RGB565();
38 void ConvertX86p32_16BGR565();
39 void ConvertX86p32_16RGB555();
40 void ConvertX86p32_16BGR555();
41 void ConvertX86p32_8RGB332();
42
43 void ConvertX86p16_32RGB888();
44 void ConvertX86p16_32BGR888();
45 void ConvertX86p16_32RGBA888();
46 void ConvertX86p16_32BGRA888();
47 void ConvertX86p16_24RGB888();
48 void ConvertX86p16_24BGR888();
49 void ConvertX86p16_16BGR565();
50 void ConvertX86p16_16RGB555();
51 void ConvertX86p16_16BGR555();
52 void ConvertX86p16_8RGB332();
53
54 void CopyX86p_4byte();
55 void CopyX86p_3byte();
56 void CopyX86p_2byte();
57 void CopyX86p_1byte();
58
59 void ConvertX86pI8_32();
60 void ConvertX86pI8_24();
61 void ConvertX86pI8_16();
62
63 extern int ConvertX86p16_32RGB888_LUT_X86[512];
64 extern int ConvertX86p16_32BGR888_LUT_X86[512];
65 extern int ConvertX86p16_32RGBA888_LUT_X86[512];
66 extern int ConvertX86p16_32BGRA888_LUT_X86[512];
67   
68 #ifdef __cplusplus
69 }
70 #endif
71
72
73
74
75 /* Now fix up the ELF underscore problem */
76
77 #if (defined(__ELF__) && defined(__GNUC__)) || defined(__SUNPRO_C)
78   #ifdef __cplusplus
79   extern "C" {
80   #endif
81
82   extern int _Hermes_X86_CPU();
83
84   extern void _ConvertX86(HermesConverterInterface *);
85
86   extern void _ConvertX86p32_32BGR888();
87   extern void _ConvertX86p32_32RGBA888();
88   extern void _ConvertX86p32_32BGRA888();
89   extern void _ConvertX86p32_24RGB888();
90   extern void _ConvertX86p32_24BGR888();
91   extern void _ConvertX86p32_16RGB565();
92   extern void _ConvertX86p32_16BGR565();
93   extern void _ConvertX86p32_16RGB555();
94   extern void _ConvertX86p32_16BGR555();
95   extern void _ConvertX86p32_8RGB332();
96
97   extern void _ConvertX86p16_16BGR565();
98   extern void _ConvertX86p16_16RGB555();
99   extern void _ConvertX86p16_16BGR555();
100   extern void _ConvertX86p16_8RGB332();
101
102
103   #define Hermes_X86_CPU _Hermes_X86_CPU
104
105   #define ConvertX86 _ConvertX86
106
107   #define ConvertX86p32_32BGR888 _ConvertX86p32_32BGR888
108   #define ConvertX86p32_32RGBA888 _ConvertX86p32_32RGBA888
109   #define ConvertX86p32_32BGRA888 _ConvertX86p32_32BGRA888
110   #define ConvertX86p32_24RGB888 _ConvertX86p32_24RGB888
111   #define ConvertX86p32_24BGR888 _ConvertX86p32_24BGR888
112   #define ConvertX86p32_16RGB565 _ConvertX86p32_16RGB565
113   #define ConvertX86p32_16BGR565 _ConvertX86p32_16BGR565
114   #define ConvertX86p32_16RGB555 _ConvertX86p32_16RGB555
115   #define ConvertX86p32_16BGR555 _ConvertX86p32_16BGR555
116   #define ConvertX86p32_8RGB332 _ConvertX86p32_8RGB332
117
118   #define ConvertX86p16_16BGR565 _ConvertX86p16_16BGR565
119   #define ConvertX86p16_16RGB555 _ConvertX86p16_16RGB555
120   #define ConvertX86p16_16BGR555 _ConvertX86p16_16BGR555
121   #define ConvertX86p16_8RGB332 _ConvertX86p16_8RGB332
122
123
124   #ifdef __cplusplus
125   }
126   #endif
127
128 #endif /* ELF & GNU */
129
130
131
132 /* Make it run with WATCOM C */
133 #ifdef __WATCOMC__
134 #pragma warning 601 9
135
136 #pragma aux Hermes_X86_CPU "_*"
137
138 #pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI]
139 #pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
140 #pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
141 #pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
142 #pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
143
144 #pragma aux ConvertX86p32_32BGR888 "_*"
145 #pragma aux ConvertX86p32_32RGBA888 "_*"
146 #pragma aux ConvertX86p32_32BGRA888 "_*"
147 #pragma aux ConvertX86p32_24RGB888 "_*"
148 #pragma aux ConvertX86p32_24BGR888 "_*"
149 #pragma aux ConvertX86p32_16RGB565 "_*"
150 #pragma aux ConvertX86p32_16BGR565 "_*"
151 #pragma aux ConvertX86p32_16RGB555 "_*"
152 #pragma aux ConvertX86p32_16BGR555 "_*"
153 #pragma aux ConvertX86p32_8RGB332 "_*"
154
155 #pragma aux ConvertX86p16_32RGB888 "_*"
156 #pragma aux ConvertX86p16_32BGR888 "_*"
157 #pragma aux ConvertX86p16_32RGBA888 "_*"
158 #pragma aux ConvertX86p16_32BGRA888 "_*"
159 #pragma aux ConvertX86p16_24RGB888 "_*"
160 #pragma aux ConvertX86p16_24BGR888 "_*"
161 #pragma aux ConvertX86p16_16BGR565 "_*"
162 #pragma aux ConvertX86p16_16RGB555 "_*"
163 #pragma aux ConvertX86p16_16BGR555 "_*"
164 #pragma aux ConvertX86p16_8RGB332 "_*"
165
166 #pragma aux CopyX86p_4byte "_*"
167 #pragma aux CopyX86p_3byte "_*"
168 #pragma aux CopyX86p_2byte "_*"
169 #pragma aux CopyX86p_1byte "_*"
170
171 #pragma aux ConvertX86pI8_32 "_*"
172 #pragma aux ConvertX86pI8_24 "_*"
173 #pragma aux ConvertX86pI8_16 "_*"
174
175 #pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*"
176 #pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*"
177 #pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*"
178 #pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*"
179
180 #endif /* __WATCOMC__ */
181
182
183 #endif /* X86_ASSEMBLER */
184
185
186 #endif