|
|
1 | 0x0001000a |
|
|
2 | - added ecb_ptrmix. |
|
|
3 | |
|
|
4 | 0x00010009 |
|
|
5 | - added ecb_i2a family of functions. |
|
|
6 | - added ECB_64BIT_NATIVE. |
|
|
7 | |
1 | TODO: |
8 | TODO: |
2 | 08:30:06 <b_jonas> I think it could be worth to add a macro that works like alignof or _Alignof on sane |
9 | 08:30:06 <b_jonas> I think it could be worth to add a macro that works like alignof or _Alignof on sane |
3 | compilers, and like __alignof on MS compilers that support it, see |
10 | compilers, and like __alignof on MS compilers that support it, see |
4 | http://msdn.microsoft.com/en-us/library/45t0s5f4.aspx |
11 | http://msdn.microsoft.com/en-us/library/45t0s5f4.aspx |
5 | 08:30:24 <b_jonas> even if you can't support it on all the old compilers |
12 | 08:30:24 <b_jonas> even if you can't support it on all the old compilers |
… | |
… | |
10 | 08:32:23 <b_jonas> probably not, because it would just account to making a union with a highly aligned type, |
17 | 08:32:23 <b_jonas> probably not, because it would just account to making a union with a highly aligned type, |
11 | which is something I can do on any compiler portably |
18 | which is something I can do on any compiler portably |
12 | |
19 | |
13 | TODO: #define ECB_IS_INTEGRAL(x) !((1 ? 1 : (x)) / 2) |
20 | TODO: #define ECB_IS_INTEGRAL(x) !((1 ? 1 : (x)) / 2) |
14 | #define ECB_IS_INTEGRAL(x) (sizeof ((x) + 1.0f) != sizeof((x) + 1ULL)) |
21 | #define ECB_IS_INTEGRAL(x) (sizeof ((x) + 1.0f) != sizeof((x) + 1ULL)) |
|
|
22 | |
|
|
23 | TODO: ecb_minpot, either using bit tricks or ecb_ldXX |
|
|
24 | |
|
|
25 | TODO: __builtin_popcountll exists... |
15 | |
26 | |
16 | TODO: __builtin_powi |
27 | TODO: __builtin_powi |
17 | |
28 | |
18 | TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ |
29 | TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ |
19 | |
30 | |
… | |
… | |
63 | |
74 | |
64 | #include <byteswap.h> |
75 | #include <byteswap.h> |
65 | |
76 | |
66 | #endif |
77 | #endif |
67 | |
78 | |
|
|
79 | TODO: generic poprcount etc., also fast_t for them? |
|
|
80 | |
|
|
81 | - allow any rotate count in rcb_rot*, at the expense |
|
|
82 | of bad optimisation results on some platforms or with |
|
|
83 | some word sizes. |
|
|
84 | - try to use inttypes.h on mingw. |
|
|
85 | |
|
|
86 | 0x00010008 |
|
|
87 | - aligned/unaligned load/store, bswap, host order |
|
|
88 | conversion. |
|
|
89 | - generic C++ ecb_rot[lr], ecb_popcount, ecb_ctz, |
|
|
90 | ecb_is_pot32 and ecb_bitrev functions. |
|
|
91 | |
|
|
92 | 0x00010007 |
|
|
93 | - new ECB_OPTIMIZE_SIZE symbol. |
|
|
94 | |
|
|
95 | 0x00010006 |
|
|
96 | - new ECB_MEMORY_FENCE_RELAXED memory fence. |
|
|
97 | - use acquire/eelease memory barriers on sun workshop pro, not read/write. |
|
|
98 | - rely on c++ compiler barriers to do the right thing in gcc/clang. |
68 | - change release memory fence to memory barrier on ia32/ia64. |
99 | - change release memory fence to memory barrier on ia32/ia64. |
69 | - apply ctz/ld patch for msc by Zsbán Ambrus. |
100 | - apply ctz/ld patch for msc by Zsbán Ambrus. |
70 | - ECB_PTRSIZE erroneously was 8 on most 32bit systems ( |
101 | - ECB_PTRSIZE erroneously was 8 on most 32bit systems ( |
71 | found by Zsbán Ambrus). |
102 | found by Zsbán Ambrus). |
72 | - improved compiletime detection of endianness, also, allow |
103 | - improved compiletime detection of endianness, also, allow |