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

Comparing libecb/Changes (file contents):
Revision 1.25 by root, Wed Nov 25 02:36:53 2015 UTC vs.
Revision 1.45 by root, Fri Mar 25 15:34:12 2022 UTC

1TODO: naming of cutnions, index_to_coord, xy_to_s, xy_to_linear/seq, 32/64
2TODO: returning packed coordinates, really
3TODO: support order=0?
40x0001000c
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
140x0001000b
15 - added ecb_gray*_{de,en}code functions.
16
170x0001000a
18 - added ecb_ptrmix.
19
200x00010009
21 - added ecb_i2a family of functions.
22 - added ECB_64BIT_NATIVE.
23
1TODO: 24TODO:
208:30:06 <b_jonas> I think it could be worth to add a macro that works like alignof or _Alignof on sane 2508: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
508:30:24 <b_jonas> even if you can't support it on all the old compilers 2808:30:24 <b_jonas> even if you can't support it on all the old compilers
1008:32:23 <b_jonas> probably not, because it would just account to making a union with a highly aligned type, 3308: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
13TODO: #define ECB_IS_INTEGRAL(x) !((1 ? 1 : (x)) / 2) 36TODO: #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
39TODO: ecb_minpot, either using bit tricks or ecb_ldXX
40
41TODO: __builtin_popcountll exists...
42
43TODO: __builtin_powi
15 44
16TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ 45TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/
17 46
18implement is_constant for c11: https://gustedt.wordpress.com/2013/08/22/testing-compile-time-constness-and-null-pointers-with-c11s-_generic/ 47implement 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
95TODO: 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
1020x00010008
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
1080x00010007
109 - new ECB_OPTIMIZE_SIZE symbol.
110
1110x00010006
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
720x00010005 1230x00010005
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.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines