| 257 | /* SSE and co like 16-bytes aligned pointers */ |
| 258 | #define MALLOC_V4SF_ALIGNMENT 64 // with a 64-byte alignment, we are even aligned on L2 cache lines... |
| 259 | void *pffft_aligned_malloc(size_t nb_bytes) { |
| 260 | void *p, *p0 = malloc(nb_bytes + MALLOC_V4SF_ALIGNMENT); |
| 261 | if (!p0) return (void *) 0; |
| 262 | p = (void *) (((size_t) p0 + MALLOC_V4SF_ALIGNMENT) & (~((size_t) (MALLOC_V4SF_ALIGNMENT-1)))); |
| 263 | *((void **) p - 1) = p0; |
| 264 | return p; |
| 265 | } |
| 266 | |
| 267 | void pffft_aligned_free(void *p) { |
| 268 | if (p) free(*((void **) p - 1)); |
no outgoing calls
no test coverage detected