cosmopolitan/third_party/intel/mm_malloc.internal.h

30 lines
713 B
C
Raw Normal View History

#if defined(__x86_64__) && !(__ASSEMBLER__ + __LINKER__ + 0)
2023-04-27 09:56:41 +00:00
#ifndef _MM_MALLOC_H_INCLUDED
#define _MM_MALLOC_H_INCLUDED
#include "libc/mem/mem.h"
#ifndef __cplusplus
extern int posix_memalign (void **, size_t, size_t);
2023-04-27 09:56:41 +00:00
#else
extern "C" int posix_memalign (void **, size_t, size_t);
2023-04-27 09:56:41 +00:00
#endif
static __inline void *
_mm_malloc (size_t __size, size_t __alignment)
{
2023-04-27 09:56:41 +00:00
void *__ptr;
if (__alignment == 1)
return malloc (__size);
if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
__alignment = sizeof (void *);
if (posix_memalign (&__ptr, __alignment, __size) == 0)
2023-04-27 09:56:41 +00:00
return __ptr;
else
return NULL;
}
static __inline void
_mm_free (void *__ptr)
{
free (__ptr);
2023-04-27 09:56:41 +00:00
}
#endif
#endif