ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libecb/ecb.h
(Generate patch)

Comparing libecb/ecb.h (file contents):
Revision 1.85 by root, Mon Apr 2 20:22:17 2012 UTC vs.
Revision 1.88 by root, Mon May 28 08:40:25 2012 UTC

28 */ 28 */
29 29
30#ifndef ECB_H 30#ifndef ECB_H
31#define ECB_H 31#define ECB_H
32 32
33/* 16 bits major, 16 bits minor */
34#define ECB_VERSION 0x00010001
35
33#ifdef _WIN32 36#ifdef _WIN32
34 typedef signed char int8_t; 37 typedef signed char int8_t;
35 typedef unsigned char uint8_t; 38 typedef unsigned char uint8_t;
36 typedef signed short int16_t; 39 typedef signed short int16_t;
37 typedef unsigned short uint16_t; 40 typedef unsigned short uint16_t;
42 typedef unsigned long long uint64_t; 45 typedef unsigned long long uint64_t;
43 #else /* _MSC_VER || __BORLANDC__ */ 46 #else /* _MSC_VER || __BORLANDC__ */
44 typedef signed __int64 int64_t; 47 typedef signed __int64 int64_t;
45 typedef unsigned __int64 uint64_t; 48 typedef unsigned __int64 uint64_t;
46 #endif 49 #endif
50 #ifdef _WIN64
51 #define ECB_PTRSIZE 8
52 typedef uint64_t uintptr_t;
53 typedef int64_t intptr_t;
54 #else
55 #define ECB_PTRSIZE 4
56 typedef uint32_t uintptr_t;
57 typedef int32_t intptr_t;
58 #endif
47#else 59#else
48 #include <inttypes.h> 60 #include <inttypes.h>
61 #if UINTMAX_MAX > 0xffffffffU
62 #define ECB_PTRSIZE 8
63 #else
64 #define ECB_PTRSIZE 4
65 #endif
49#endif 66#endif
50 67
51/* many compilers define _GNUC_ to some versions but then only implement 68/* many compilers define _GNUC_ to some versions but then only implement
52 * what their idiot authors think are the "more important" extensions, 69 * what their idiot authors think are the "more important" extensions,
53 * causing enormous grief in return for some better fake benchmark numbers. 70 * causing enormous grief in return for some better fake benchmark numbers.
100 #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore | #StoreStore") 117 #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore | #StoreStore")
101 #elif defined __s390__ || defined __s390x__ 118 #elif defined __s390__ || defined __s390x__
102 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("bcr 15,0" : : : "memory") 119 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("bcr 15,0" : : : "memory")
103 #elif defined __mips__ 120 #elif defined __mips__
104 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") 121 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory")
122 #elif defined __alpha__
123 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mb" : : : "memory")
105 #endif 124 #endif
106 #endif 125 #endif
107#endif 126#endif
108 127
109#ifndef ECB_MEMORY_FENCE 128#ifndef ECB_MEMORY_FENCE
308 327
309 return r + ecb_ld32 (x); 328 return r + ecb_ld32 (x);
310 } 329 }
311#endif 330#endif
312 331
332ecb_function_ ecb_bool ecb_is_pot32 (uint32_t x) ecb_const;
333ecb_function_ ecb_bool ecb_is_pot32 (uint32_t x) { return !(x & (x - 1)); }
334ecb_function_ ecb_bool ecb_is_pot64 (uint64_t x) ecb_const;
335ecb_function_ ecb_bool ecb_is_pot64 (uint64_t x) { return !(x & (x - 1)); }
336
313ecb_function_ uint8_t ecb_bitrev8 (uint8_t x) ecb_const; 337ecb_function_ uint8_t ecb_bitrev8 (uint8_t x) ecb_const;
314ecb_function_ uint8_t ecb_bitrev8 (uint8_t x) 338ecb_function_ uint8_t ecb_bitrev8 (uint8_t x)
315{ 339{
316 return ( (x * 0x0802U & 0x22110U) 340 return ( (x * 0x0802U & 0x22110U)
317 | (x * 0x8020U & 0x88440U)) * 0x10101U >> 16; 341 | (x * 0x8020U & 0x88440U)) * 0x10101U >> 16;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines