On Wed, Jul 22, 2020 at 6:56 PM Bruno Haible <[email protected]> wrote:
>
> Hi Paul,
>
> > Of course this performance issue is mostly just for MS-Windows, as other
> > major
> > current platforms already have aligned_alloc or rough equivalent.
>
> No, it's not only Windows. It's
> - macOS
> - Minix
> - native Windows
>
> Here's the complete matrix:
>
> posix_memalign aligned_alloc memalign
>
> glibc Y Y Y
> musl Y Y Y
> macOS - - -
> FreeBSD Y Y -
> NetBSD Y - -
> OpenBSD Y Y -
> AIX Y - -
> HP-UX - - Y
> IRIX - - Y
> Solaris 10 - - Y
> Solaris 11 Y Y -
> Minix - - -
> Haiku Y - Y
> Android Y - Y
> Cygwin Y - Y
> native Windows - - -
This may be helpful for OS X... all pointers returned from malloc(),
calloc() and friends are 16-byte aligned. From the OS X man page:
MALLOC(3) BSD Library Functions Manual MALLOC(3)
NAME
calloc, free, malloc, realloc, reallocf, valloc -- memory allocation
SYNOPSIS
#include <stdlib.h>
void *
calloc(size_t count, size_t size);
void
free(void *ptr);
void *
malloc(size_t size);
void *
realloc(void *ptr, size_t size);
void *
reallocf(void *ptr, size_t size);
void *
valloc(size_t size);
DESCRIPTION
The malloc(), calloc(), valloc(), realloc(), and reallocf() functions
allocate memory. The allocated memory is aligned such that it can be
used for any data type, including AltiVec- and SSE-related types. The
free() function frees allocations that were created via the preceding
allocation functions.
...
Jeff