mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
fa20edc44d
- Remove most __ASSEMBLER__ __LINKER__ ifdefs - Rename libc/intrin/bits.h to libc/serialize.h - Block pthread cancelation in fchmodat() polyfill - Remove `clang-format off` statements in third_party
25 lines
748 B
C
25 lines
748 B
C
#if defined(__x86_64__) && !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
#ifndef _MM_MALLOC_H_INCLUDED
|
|
#define _MM_MALLOC_H_INCLUDED
|
|
#include "libc/mem/mem.h"
|
|
#ifndef __cplusplus
|
|
extern int _mm_posix_memalign(void **, size_t, size_t)
|
|
#else
|
|
extern "C" int _mm_posix_memalign(void **, size_t, size_t) throw()
|
|
#endif
|
|
__asm__("posix_memalign");
|
|
static __inline void *_mm_malloc(size_t __size, size_t __alignment) {
|
|
void *__ptr;
|
|
if (__alignment == 1) return malloc(__size);
|
|
if (__alignment == 2 || (sizeof(void *) == 8 && __alignment == 4))
|
|
__alignment = sizeof(void *);
|
|
if (_mm_posix_memalign(&__ptr, __alignment, __size) == 0)
|
|
return __ptr;
|
|
else
|
|
return NULL;
|
|
}
|
|
static __inline void _mm_free(void *__ptr) {
|
|
free(__ptr);
|
|
}
|
|
#endif
|
|
#endif
|