mem: Choose alignment at compile time depending on AVX enabledness.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2011-05-10 03:15:42 +02:00
parent 53789a27f8
commit 08675bb399
1 changed files with 6 additions and 4 deletions

View File

@ -57,6 +57,8 @@ void free(void *ptr);
#endif /* MALLOC_PREFIX */ #endif /* MALLOC_PREFIX */
#define ALIGN (HAVE_AVX ? 32 : 16)
/* You can redefine av_malloc and av_free in your project to use your /* You can redefine av_malloc and av_free in your project to use your
memory allocator. You do not need to suppress this file because the memory allocator. You do not need to suppress this file because the
linker will do it automatically. */ linker will do it automatically. */
@ -73,17 +75,17 @@ void *av_malloc(size_t size)
return NULL; return NULL;
#if CONFIG_MEMALIGN_HACK #if CONFIG_MEMALIGN_HACK
ptr = malloc(size+32); ptr = malloc(size+ALIGN);
if(!ptr) if(!ptr)
return ptr; return ptr;
diff= ((-(long)ptr - 1)&31) + 1; diff= ((-(long)ptr - 1)&(ALIGN-1)) + 1;
ptr = (char*)ptr + diff; ptr = (char*)ptr + diff;
((char*)ptr)[-1]= diff; ((char*)ptr)[-1]= diff;
#elif HAVE_POSIX_MEMALIGN #elif HAVE_POSIX_MEMALIGN
if (posix_memalign(&ptr,32,size)) if (posix_memalign(&ptr,ALIGN,size))
ptr = NULL; ptr = NULL;
#elif HAVE_MEMALIGN #elif HAVE_MEMALIGN
ptr = memalign(32,size); ptr = memalign(ALIGN,size);
/* Why 64? /* Why 64?
Indeed, we should align it: Indeed, we should align it:
on 4 for 386 on 4 for 386