00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 #ifndef INC_MI32_CPUEXT_H
00075 #define INC_MI32_CPUEXT_H
00076
00077 #ifndef INC_MI32_STDDEFNS_H
00078 #include <mi32/stddefns.h>
00079 #endif
00080
00081 #ifndef INC_STDDEF_H
00082 #include <stddef.h>
00083 #define INC_STDDEF_H
00084 #endif
00085
00086
00087
00088
00089 #ifndef INC_STRING_H
00090 #ifndef GENERATING_DOXYGEN_OUTPUT
00091 #include <string.h>
00092 #define INC_STRING_H
00093 #endif
00094 #endif
00095
00096 #ifdef WIN32
00097 #ifndef _INC_WCHAR
00098 #include <wchar.h>
00099 #endif
00100 #endif
00101
00102
00103 #ifdef MISYSTEMDLL
00104 #define LIBEXPORT MI_DLLEXPORT
00105 #else
00106 #define LIBEXPORT MI_DLLIMPORT
00107 #endif
00108
00109 #define CPUEXT_MMX 0x00000001
00110 #define CPUEXT_SIMD 0x00000002
00111 #define CPUEXT_SSE 0x00000002
00112 #define CPUEXT_PREFETCHNTA 0x00000004
00113 #define CPUEXT_SSE2 0x00000008
00114 #define CPUEXT_CMOV 0x00000010
00115 #define CPUEXT_TSC 0x00000020
00116 #define CPUEXT_3DNOW 0x00010000
00117 #define CPUEXT_3DNOWEX 0x00020000
00118 #define CPUEXT_AMDMMX 0x00040000
00119
00120
00121 #if defined(__cplusplus)
00122 extern "C" {
00123 #endif
00124
00125 #if defined(LINUX) && defined(INTEL)
00126
00127
00128
00129
00130 #define readTSC() ({unsigned long long __scr; __asm__ __volatile__ ("rdtsc" :"=A"(__scr));__scr;})
00131 #endif
00132
00133 #if defined(WIN32) && !defined(WIN64)
00134
00147 LIBEXPORT UINT32 GetCPUExtension();
00148
00154 inline __int64 readTSC() { __asm { rdtsc } }
00155
00156 #ifndef GENERATING_DOXYGEN_OUTPUT
00163
00168
00173 extern void* (*amemcpy)(void* dest, const void* src, size_t size);
00174 #endif
00175
00176 #else
00177
00178 #define GetCPUExtension() (0)
00179 #define amemcpy memcpy
00180
00181 #endif
00182
00183 #define HasMMX() (GetCPUExtension() & CPUEXT_MMX)
00184
00185 #if 0 // Fake function prototypes for Genitor to generate documentation from
00186
00190 void* amemcpy (
00191 void* dest,
00192 const void* src,
00193 size_t size
00194 );
00195
00196 #endif
00197
00207 void AlphaBlend24 (
00208 UINT8* dest,
00209 const UINT8* src,
00210 UINT8 alpha,
00211 int n
00212 );
00213
00221 void AlphaBlendVarAlpha24 (
00222 UINT8* dest,
00223 const UINT8* src,
00224 const UINT8* alpha,
00225 int n
00226 );
00227
00237 void AlphaBlendColor24 (
00238 UINT8* dest,
00239 UINT8 r,
00240 UINT8 g,
00241 UINT8 b,
00242 UINT8 alpha,
00243 int n
00244 );
00245
00261 void AlphaBlend32 (
00262 UINT32* dest,
00263 const UINT32* src,
00264 UINT8 alpha,
00265 int n
00266 );
00267
00280 void AlphaBlendVarAlpha32 (
00281 UINT32* dest,
00282 const UINT32* src,
00283 const UINT8* alpha,
00284 int n
00285 );
00286
00297 void AlphaBlendColor32 (
00298 UINT32* dest,
00299 UINT32 pix,
00300 UINT8 alpha,
00301 int n
00302 );
00303
00304
00315 void AlphaBlendColor32RGBA (
00316 UINT32* dest,
00317 UINT32 pix,
00318 int n
00319 );
00320
00321
00332 void AlphaBlendColor32ABGR (
00333 UINT32* dest,
00334 UINT32 pix,
00335 int n
00336 );
00337
00338
00339 #if defined(__cplusplus)
00340 }
00341 #endif
00342
00343 #endif