|
|
1 | TODO: naming of cutnions, index_to_coord, xy_to_s, xy_to_linear/seq, 32/64 |
|
|
2 | TODO: returning packed coordinates, really |
|
|
3 | TODO: support order=0? |
|
|
4 | 0x0001000c |
|
|
5 | - added ecb_hilbert2d function family. |
|
|
6 | - use __builtin_popcountl on 64 bit clang and gcc. |
|
|
7 | - use 64 bit builtins, not 128 bit builtins, for ctz/clz on 64 bit cpus. |
|
|
8 | - add ecb_clz* functions, |
|
|
9 | - renamed ecb_gray* functions to have trailing bit width. |
|
|
10 | - use ecb_function_ consistently for newly added functions. |
|
|
11 | - say goodbye to gnu-style function definitions - they were not |
|
|
12 | used consistently anyway, and imho make the code harder to read. |
|
|
13 | |
|
|
14 | 0x0001000b |
|
|
15 | - added ecb_gray*_{de,en}code functions. |
|
|
16 | |
|
|
17 | 0x0001000a |
|
|
18 | - added ecb_ptrmix. |
|
|
19 | |
|
|
20 | 0x00010009 |
|
|
21 | - added ecb_i2a family of functions. |
|
|
22 | - added ECB_64BIT_NATIVE. |
|
|
23 | |
1 | TODO: |
24 | 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 |
25 | 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 |
26 | compilers, and like __alignof on MS compilers that support it, see |
4 | http://msdn.microsoft.com/en-us/library/45t0s5f4.aspx |
27 | 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 |
28 | 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, |
33 | 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 |
34 | which is something I can do on any compiler portably |
12 | |
35 | |
13 | TODO: #define ECB_IS_INTEGRAL(x) !((1 ? 1 : (x)) / 2) |
36 | TODO: #define ECB_IS_INTEGRAL(x) !((1 ? 1 : (x)) / 2) |
14 | #define ECB_IS_INTEGRAL(x) (sizeof ((x) + 1.0f) != sizeof((x) + 1ULL)) |
37 | #define ECB_IS_INTEGRAL(x) (sizeof ((x) + 1.0f) != sizeof((x) + 1ULL)) |
|
|
38 | |
|
|
39 | TODO: ecb_minpot, either using bit tricks or ecb_ldXX |
|
|
40 | |
|
|
41 | TODO: __builtin_popcountll exists... |
|
|
42 | |
|
|
43 | TODO: __builtin_powi |
15 | |
44 | |
16 | TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ |
45 | TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ |
17 | |
46 | |
18 | implement is_constant for c11: https://gustedt.wordpress.com/2013/08/22/testing-compile-time-constness-and-null-pointers-with-c11s-_generic/ |
47 | implement is_constant for c11: https://gustedt.wordpress.com/2013/08/22/testing-compile-time-constness-and-null-pointers-with-c11s-_generic/ |
19 | |
48 | |
… | |
… | |
61 | |
90 | |
62 | #include <byteswap.h> |
91 | #include <byteswap.h> |
63 | |
92 | |
64 | #endif |
93 | #endif |
65 | |
94 | |
|
|
95 | TODO: generic poprcount etc., also fast_t for them? |
|
|
96 | |
|
|
97 | - allow any rotate count in rcb_rot*, at the expense |
|
|
98 | of bad optimisation results on some platforms or with |
|
|
99 | some word sizes. |
|
|
100 | - try to use inttypes.h on mingw. |
|
|
101 | |
|
|
102 | 0x00010008 |
|
|
103 | - aligned/unaligned load/store, bswap, host order |
|
|
104 | conversion. |
|
|
105 | - generic C++ ecb_rot[lr], ecb_popcount, ecb_ctz, |
|
|
106 | ecb_is_pot32 and ecb_bitrev functions. |
|
|
107 | |
|
|
108 | 0x00010007 |
|
|
109 | - new ECB_OPTIMIZE_SIZE symbol. |
|
|
110 | |
|
|
111 | 0x00010006 |
|
|
112 | - new ECB_MEMORY_FENCE_RELAXED memory fence. |
|
|
113 | - use acquire/eelease memory barriers on sun workshop pro, not read/write. |
|
|
114 | - rely on c++ compiler barriers to do the right thing in gcc/clang. |
|
|
115 | - change release memory fence to memory barrier on ia32/ia64. |
66 | - apply ctz/ld patch for msc by Zsbán Ambrus. |
116 | - apply ctz/ld patch for msc by Zsbán Ambrus. |
67 | - ECB_PTRSIZE erroneously was 8 on most 32bit systems ( |
117 | - ECB_PTRSIZE erroneously was 8 on most 32bit systems ( |
68 | found by Zsbán Ambrus). |
118 | found by Zsbán Ambrus). |
69 | - improved compiletime detection of endianness, also, allow |
119 | - improved compiletime detection of endianness, also, allow |
70 | runtime detection to indicate other-than-big/little endianness. |
120 | runtime detection to indicate other-than-big/little endianness. |
|
|
121 | - no memory barrier neded on arm < 6. |
71 | |
122 | |
72 | 0x00010005 |
123 | 0x00010005 |
73 | - improve ecb_binary16_to_float. |
124 | - improve ecb_binary16_to_float. |
74 | - add ecb_float_to_binary16. |
125 | - add ecb_float_to_binary16. |
75 | - add ecb_binary16_to_binary32 and ecb_binary32_to_binary16 pair. |
126 | - add ecb_binary16_to_binary32 and ecb_binary32_to_binary16 pair. |