comparison src/hermes/HeadX86.h @ 0:74212992fb08

Initial revision
author Sam Lantinga <slouken@lokigames.com>
date Thu, 26 Apr 2001 16:45:43 +0000
parents
children c94b390687d2
comparison
equal deleted inserted replaced
-1:000000000000 0:74212992fb08
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 int32 ConvertX86p16_32RGB888_LUT_X86[512];
64 extern int32 ConvertX86p16_32BGR888_LUT_X86[512];
65 extern int32 ConvertX86p16_32RGBA888_LUT_X86[512];
66 extern int32 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__)
78 #ifdef __cplusplus
79 extern "C" {
80 #endif
81
82 int Hermes_X86_CPU() __attribute__ ((alias ("_Hermes_X86_CPU")));
83
84 void ConvertX86(HermesConverterInterface *) __attribute__ ((alias ("_ConvertX86")));
85
86 #if 0
87 void ClearX86_32(HermesClearInterface *) __attribute__ ((alias ("_ClearX86_32")));
88 void ClearX86_24(HermesClearInterface *) __attribute__ ((alias ("_ClearX86_24")));
89 void ClearX86_16(HermesClearInterface *) __attribute__ ((alias ("_ClearX86_16")));
90 void ClearX86_8(HermesClearInterface *) __attribute__ ((alias ("_ClearX86_8")));
91 #endif
92
93 void ConvertX86p32_32BGR888() __attribute__ ((alias ("_ConvertX86p32_32BGR888")));
94 void ConvertX86p32_32RGBA888() __attribute__ ((alias ("_ConvertX86p32_32RGBA888")));
95 void ConvertX86p32_32BGRA888() __attribute__ ((alias ("_ConvertX86p32_32BGRA888")));
96 void ConvertX86p32_24RGB888() __attribute__ ((alias ("_ConvertX86p32_24RGB888")));
97 void ConvertX86p32_24BGR888() __attribute__ ((alias ("_ConvertX86p32_24BGR888")));
98 void ConvertX86p32_16RGB565() __attribute__ ((alias ("_ConvertX86p32_16RGB565")));
99 void ConvertX86p32_16BGR565() __attribute__ ((alias ("_ConvertX86p32_16BGR565")));
100 void ConvertX86p32_16RGB555() __attribute__ ((alias ("_ConvertX86p32_16RGB555")));
101 void ConvertX86p32_16BGR555() __attribute__ ((alias ("_ConvertX86p32_16BGR555")));
102 void ConvertX86p32_8RGB332() __attribute__ ((alias ("_ConvertX86p32_8RGB332")));
103
104 #if 0
105 void ConvertX86p16_32RGB888() __attribute__ ((alias ("_ConvertX86p16_32RGB888")));
106 void ConvertX86p16_32BGR888() __attribute__ ((alias ("_ConvertX86p16_32BGR888")));
107 void ConvertX86p16_32RGBA888() __attribute__ ((alias ("_ConvertX86p16_32RGBA888")));
108 void ConvertX86p16_32BGRA888() __attribute__ ((alias ("_ConvertX86p16_32BGRA888")));
109 void ConvertX86p16_24RGB888() __attribute__ ((alias ("_ConvertX86p16_24RGB888")));
110 void ConvertX86p16_24BGR888() __attribute__ ((alias ("_ConvertX86p16_24BGR888")));
111 #endif
112 void ConvertX86p16_16BGR565() __attribute__ ((alias ("_ConvertX86p16_16BGR565")));
113 void ConvertX86p16_16RGB555() __attribute__ ((alias ("_ConvertX86p16_16RGB555")));
114 void ConvertX86p16_16BGR555() __attribute__ ((alias ("_ConvertX86p16_16BGR555")));
115 void ConvertX86p16_8RGB332() __attribute__ ((alias ("_ConvertX86p16_8RGB332")));
116
117 #if 0
118 void CopyX86p_4byte() __attribute__ ((alias ("_CopyX86p_4byte")));
119 void CopyX86p_3byte() __attribute__ ((alias ("_CopyX86p_3byte")));
120 void CopyX86p_2byte() __attribute__ ((alias ("_CopyX86p_2byte")));
121 void CopyX86p_1byte() __attribute__ ((alias ("_CopyX86p_1byte")));
122
123 void ConvertX86pI8_32() __attribute__ ((alias ("_ConvertX86pI8_32")));
124 void ConvertX86pI8_24() __attribute__ ((alias ("_ConvertX86pI8_24")));
125 void ConvertX86pI8_16() __attribute__ ((alias ("_ConvertX86pI8_16")));
126
127 extern int32 ConvertX86p16_32RGB888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32RGB888_LUT_X86")));
128 extern int32 ConvertX86p16_32BGR888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32BGR888_LUT_X86")));
129 extern int32 ConvertX86p16_32RGBA888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32RGBA888_LUT_X86")));
130 extern int32 ConvertX86p16_32BGRA888_LUT_X86[512] __attribute__ ((alias ("_ConvertX86p16_32BGRA888_LUT_X86")));
131 #endif
132
133 #ifdef __cplusplus
134 }
135 #endif
136
137 #endif /* ELF & GNU */
138
139
140
141 /* Make it run with WATCOM C */
142 #ifdef __WATCOMC__
143 #pragma warning 601 9
144
145 #pragma aux Hermes_X86_CPU "_*"
146
147 #pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI]
148 #pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
149 #pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
150 #pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
151 #pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
152
153 #pragma aux ConvertX86p32_32BGR888 "_*"
154 #pragma aux ConvertX86p32_32RGBA888 "_*"
155 #pragma aux ConvertX86p32_32BGRA888 "_*"
156 #pragma aux ConvertX86p32_24RGB888 "_*"
157 #pragma aux ConvertX86p32_24BGR888 "_*"
158 #pragma aux ConvertX86p32_16RGB565 "_*"
159 #pragma aux ConvertX86p32_16BGR565 "_*"
160 #pragma aux ConvertX86p32_16RGB555 "_*"
161 #pragma aux ConvertX86p32_16BGR555 "_*"
162 #pragma aux ConvertX86p32_8RGB332 "_*"
163
164 #pragma aux ConvertX86p16_32RGB888 "_*"
165 #pragma aux ConvertX86p16_32BGR888 "_*"
166 #pragma aux ConvertX86p16_32RGBA888 "_*"
167 #pragma aux ConvertX86p16_32BGRA888 "_*"
168 #pragma aux ConvertX86p16_24RGB888 "_*"
169 #pragma aux ConvertX86p16_24BGR888 "_*"
170 #pragma aux ConvertX86p16_16BGR565 "_*"
171 #pragma aux ConvertX86p16_16RGB555 "_*"
172 #pragma aux ConvertX86p16_16BGR555 "_*"
173 #pragma aux ConvertX86p16_8RGB332 "_*"
174
175 #pragma aux CopyX86p_4byte "_*"
176 #pragma aux CopyX86p_3byte "_*"
177 #pragma aux CopyX86p_2byte "_*"
178 #pragma aux CopyX86p_1byte "_*"
179
180 #pragma aux ConvertX86pI8_32 "_*"
181 #pragma aux ConvertX86pI8_24 "_*"
182 #pragma aux ConvertX86pI8_16 "_*"
183
184 #pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*"
185 #pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*"
186 #pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*"
187 #pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*"
188
189 #endif /* __WATCOMC__ */
190
191
192 #endif /* X86_ASSEMBLER */
193
194
195 #endif