diff --git a/configure b/configure index c86e5788faa62dc6b1dfb2375d5ee18f011ae530..7767fb259643da5f6b34b6c66f5322c423cef7f2 100755 --- a/configure +++ b/configure @@ -1881,9 +1881,7 @@ ARCH_FEATURES=" fast_64bit fast_clz fast_cmov - local_aligned_8 - local_aligned_16 - local_aligned_32 + local_aligned simd_align_16 simd_align_32 " @@ -4682,7 +4680,7 @@ elif enabled mips; then loongson*) enable loongson2 enable loongson3 - enable local_aligned_8 local_aligned_16 local_aligned_32 + enable local_aligned enable simd_align_16 enable fast_64bit enable fast_clz @@ -5574,7 +5572,7 @@ elif enabled parisc; then elif enabled ppc; then - enable local_aligned_8 local_aligned_16 local_aligned_32 + enable local_aligned check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)' check_inline_asm ibm_asm '"add 0, 0, 0"' @@ -5615,7 +5613,7 @@ elif enabled x86; then check_builtin rdtsc intrin.h "__rdtsc()" check_builtin mm_empty mmintrin.h "_mm_empty()" - enable local_aligned_8 local_aligned_16 local_aligned_32 + enable local_aligned # check whether EBP is available on x86 # As 'i' is stored on the stack, this program will crash diff --git a/libavutil/internal.h b/libavutil/internal.h index a2d73e3cc6c6354cf158e73db03016a0647b60f5..6f92f71e8e4cbc910001aa8410954d979fd2aaab 100644 --- a/libavutil/internal.h +++ b/libavutil/internal.h @@ -43,6 +43,7 @@ #include "cpu.h" #include "dict.h" #include "macros.h" +#include "mem.h" #include "pixfmt.h" #include "version.h" @@ -110,24 +111,30 @@ DECLARE_ALIGNED(a, t, la_##v) s o; \ t (*v) o = la_##v -#define LOCAL_ALIGNED(a, t, v, ...) E1(LOCAL_ALIGNED_A(a, t, v, __VA_ARGS__,,)) +#define LOCAL_ALIGNED(a, t, v, ...) LOCAL_ALIGNED_##a(t, v, __VA_ARGS__) -#if HAVE_LOCAL_ALIGNED_8 +#if HAVE_LOCAL_ALIGNED +# define LOCAL_ALIGNED_4(t, v, ...) E1(LOCAL_ALIGNED_D(4, t, v, __VA_ARGS__,,)) +#else +# define LOCAL_ALIGNED_4(t, v, ...) E1(LOCAL_ALIGNED_A(4, t, v, __VA_ARGS__,,)) +#endif + +#if HAVE_LOCAL_ALIGNED # define LOCAL_ALIGNED_8(t, v, ...) E1(LOCAL_ALIGNED_D(8, t, v, __VA_ARGS__,,)) #else -# define LOCAL_ALIGNED_8(t, v, ...) LOCAL_ALIGNED(8, t, v, __VA_ARGS__) +# define LOCAL_ALIGNED_8(t, v, ...) E1(LOCAL_ALIGNED_A(8, t, v, __VA_ARGS__,,)) #endif -#if HAVE_LOCAL_ALIGNED_16 +#if HAVE_LOCAL_ALIGNED # define LOCAL_ALIGNED_16(t, v, ...) E1(LOCAL_ALIGNED_D(16, t, v, __VA_ARGS__,,)) #else -# define LOCAL_ALIGNED_16(t, v, ...) LOCAL_ALIGNED(16, t, v, __VA_ARGS__) +# define LOCAL_ALIGNED_16(t, v, ...) E1(LOCAL_ALIGNED_A(16, t, v, __VA_ARGS__,,)) #endif -#if HAVE_LOCAL_ALIGNED_32 +#if HAVE_LOCAL_ALIGNED # define LOCAL_ALIGNED_32(t, v, ...) E1(LOCAL_ALIGNED_D(32, t, v, __VA_ARGS__,,)) #else -# define LOCAL_ALIGNED_32(t, v, ...) LOCAL_ALIGNED(32, t, v, __VA_ARGS__) +# define LOCAL_ALIGNED_32(t, v, ...) E1(LOCAL_ALIGNED_A(32, t, v, __VA_ARGS__,,)) #endif #define FF_ALLOC_OR_GOTO(ctx, p, size, label)\