… | |
… | |
10 | 08:32:23 <b_jonas> probably not, because it would just account to making a union with a highly aligned type, |
10 | 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 |
11 | which is something I can do on any compiler portably |
12 | |
12 | |
13 | TODO: #define ECB_IS_INTEGRAL(x) !((1 ? 1 : (x)) / 2) |
13 | TODO: #define ECB_IS_INTEGRAL(x) !((1 ? 1 : (x)) / 2) |
14 | #define ECB_IS_INTEGRAL(x) (sizeof ((x) + 1.0f) != sizeof((x) + 1ULL)) |
14 | #define ECB_IS_INTEGRAL(x) (sizeof ((x) + 1.0f) != sizeof((x) + 1ULL)) |
|
|
15 | |
|
|
16 | TODO: ecb_minpot, either using bit tricks or ecb_ldXX |
|
|
17 | |
|
|
18 | TODO: __builtin_popcountll exists... |
|
|
19 | |
|
|
20 | TODO: unaligned access |
|
|
21 | |
|
|
22 | TODO: __builtin_powi |
15 | |
23 | |
16 | TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ |
24 | TODO: https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments/ |
17 | |
25 | |
18 | implement is_constant for c11: https://gustedt.wordpress.com/2013/08/22/testing-compile-time-constness-and-null-pointers-with-c11s-_generic/ |
26 | implement is_constant for c11: https://gustedt.wordpress.com/2013/08/22/testing-compile-time-constness-and-null-pointers-with-c11s-_generic/ |
19 | |
27 | |
… | |
… | |
61 | |
69 | |
62 | #include <byteswap.h> |
70 | #include <byteswap.h> |
63 | |
71 | |
64 | #endif |
72 | #endif |
65 | |
73 | |
|
|
74 | 0x00010006 |
|
|
75 | - new ECB_MEMORXY_FENCE_RELAXED memory fence. |
|
|
76 | - use acquire/eelease memory barriers on sun workshop pro, not read/write. |
|
|
77 | - rely on c++ compiler barriers to do the right thing in gcc/clang. |
|
|
78 | - change release memory fence to memory barrier on ia32/ia64. |
66 | - apply ctz/ld patch for msc by Zsbán Ambrus. |
79 | - apply ctz/ld patch for msc by Zsbán Ambrus. |
|
|
80 | - ECB_PTRSIZE erroneously was 8 on most 32bit systems ( |
|
|
81 | found by Zsbán Ambrus). |
|
|
82 | - improved compiletime detection of endianness, also, allow |
|
|
83 | runtime detection to indicate other-than-big/little endianness. |
|
|
84 | - no memory barrier neded on arm < 6. |
67 | |
85 | |
68 | 0x00010005 |
86 | 0x00010005 |
69 | - improve ecb_binary16_to_float. |
87 | - improve ecb_binary16_to_float. |
70 | - add ecb_float_to_binary16. |
88 | - add ecb_float_to_binary16. |
71 | - add ecb_binary16_to_binary32 and ecb_binary32_to_binary16 pair. |
89 | - add ecb_binary16_to_binary32 and ecb_binary32_to_binary16 pair. |