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

Initial revision
author Sam Lantinga <slouken@lokigames.com>
date Thu, 26 Apr 2001 16:45:43 +0000
parents
children bb5ace455586
comparison
equal deleted inserted replaced
-1:000000000000 0:74212992fb08
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
10 #ifndef __HERMES_HEAD_MMX__
11 #define __HERMES_HEAD_MMX__
12
13
14 /* If you cannot stand ifdefs, then please do not look into this file, it's
15 going to end your life :) */
16
17 #ifdef X86_ASSEMBLER
18
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 void STACKCALL ConvertMMX(HermesConverterInterface *);
25
26 void STACKCALL ClearMMX_32(HermesClearInterface *);
27 void STACKCALL ClearMMX_24(HermesClearInterface *);
28 void STACKCALL ClearMMX_16(HermesClearInterface *);
29 void STACKCALL ClearMMX_8(HermesClearInterface *);
30
31 void ConvertMMXpII32_24RGB888();
32 void ConvertMMXpII32_16RGB565();
33 void ConvertMMXpII32_16BGR565();
34 void ConvertMMXpII32_16RGB555();
35 void ConvertMMXpII32_16BGR565();
36 void ConvertMMXpII32_16BGR555();
37
38 void ConvertMMXp32_16RGB555();
39
40 #ifdef __cplusplus
41 }
42 #endif
43
44
45
46 /* Fix the underscore business with ELF compilers */
47
48 #if defined(__ELF__) && defined(__GNUC__)
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52
53 void ConvertMMX(HermesConverterInterface *) __attribute__ ((alias ("_ConvertMMX")));
54 #if 0
55 void ClearMMX_32(HermesClearInterface *) __attribute__ ((alias ("_ClearMMX_32")));
56 void ClearMMX_24(HermesClearInterface *) __attribute__ ((alias ("_ClearMMX_24")));
57 void ClearMMX_16(HermesClearInterface *) __attribute__ ((alias ("_ClearMMX_16")));
58 void ClearMMX_8(HermesClearInterface *) __attribute__ ((alias ("_ClearMMX_8")));
59
60 void ConvertMMXp32_16RGB555() __attribute__ ((alias ("_ConvertMMXp32_16RGB555")));
61 #endif
62
63 void ConvertMMXpII32_24RGB888() __attribute__ ((alias ("_ConvertMMXpII32_24RGB888")));
64 void ConvertMMXpII32_16RGB565() __attribute__ ((alias ("_ConvertMMXpII32_16RGB565")));
65 void ConvertMMXpII32_16BGR565() __attribute__ ((alias ("_ConvertMMXpII32_16BGR565")));
66 void ConvertMMXpII32_16RGB555() __attribute__ ((alias ("_ConvertMMXpII32_16RGB555")));
67 void ConvertMMXpII32_16BGR555() __attribute__ ((alias ("_ConvertMMXpII32_16BGR555")));
68
69 #ifdef __cplusplus
70 }
71 #endif
72
73 #endif /* ELF and GNUC */
74
75
76
77
78 /* Make it work with Watcom */
79 #ifdef __WATCOMC__
80 #pragma warning 601 9
81
82 #pragma aux ConvertMMX "_*" modify [EAX EBX ECX EDX ESI EDI]
83
84 #pragma aux ClearMMX_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
85 #pragma aux ClearMMX_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
86 #pragma aux ClearMMX_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
87 #pragma aux ClearMMX_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
88
89 #pragma aux ConvertMMXpII32_24RGB888 "_*"
90 #pragma aux ConvertMMXpII32_16RGB565 "_*"
91 #pragma aux ConvertMMXpII32_16BGR565 "_*"
92 #pragma aux ConvertMMXpII32_16RGB555 "_*"
93 #pragma aux ConvertMMXpII32_16BGR555 "_*"
94 #pragma aux ConvertMMXp32_16RGB555 "_*"
95
96 #endif /* WATCOM */
97
98 #endif /* X86_ASSEMBLER */
99
100
101 #endif