21#ifndef AVUTIL_MEM_INTERNAL_H
22#define AVUTIL_MEM_INTERNAL_H
80 #define DECLARE_ALIGNED_T(n,t,v) alignas(FFMIN(n, 16)) t v
81 #define DECLARE_ASM_ALIGNED(n,t,v) alignas(FFMIN(n, 16)) t av_used v
82 #define DECLARE_ASM_CONST(n,t,v) alignas(FFMIN(n, 16)) static const t av_used v
83#elif defined(_MSC_VER)
84 #define DECLARE_ALIGNED_T(n,t,v) __declspec(align(n)) t v
85 #define DECLARE_ASM_ALIGNED(n,t,v) __declspec(align(n)) t av_used v
86 #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t av_used v
88 #define DECLARE_ALIGNED_T(n,t,v) alignas(n) t v
89 #define DECLARE_ASM_ALIGNED(n,t,v) alignas(n) t av_used v
90 #define DECLARE_ASM_CONST(n,t,v) alignas(n) static const t av_used v
96#elif HAVE_SIMD_ALIGN_32
104#define DECLARE_ALIGNED(n,t,v) DECLARE_ALIGNED_V(n,t,v)
108#define DECLARE_ALIGNED_V(n,t,v) DECLARE_ALIGNED_##n(t,v)
110#define DECLARE_ALIGNED_4(t,v) DECLARE_ALIGNED_T( 4, t, v)
111#define DECLARE_ALIGNED_8(t,v) DECLARE_ALIGNED_T( 8, t, v)
112#define DECLARE_ALIGNED_16(t,v) DECLARE_ALIGNED_T( 16, t, v)
113#define DECLARE_ALIGNED_32(t,v) DECLARE_ALIGNED_T(ALIGN_32, t, v)
114#define DECLARE_ALIGNED_64(t,v) DECLARE_ALIGNED_T(ALIGN_64, t, v)
120#define LOCAL_ALIGNED_D(a, t, v, s, o, ...) \
121 DECLARE_ALIGNED(a, t, la_##v) s o; \
124#define LOCAL_ALIGNED(a, t, v, ...) LOCAL_ALIGNED_##a(t, v, __VA_ARGS__)
126#define LOCAL_ALIGNED_4(t, v, ...) E1(LOCAL_ALIGNED_D(4, t, v, __VA_ARGS__,,))
128#define LOCAL_ALIGNED_8(t, v, ...) E1(LOCAL_ALIGNED_D(8, t, v, __VA_ARGS__,,))
130#define LOCAL_ALIGNED_16(t, v, ...) E1(LOCAL_ALIGNED_D(16, t, v, __VA_ARGS__,,))
132#define LOCAL_ALIGNED_32(t, v, ...) E1(LOCAL_ALIGNED_D(32, t, v, __VA_ARGS__,,))
134#define LOCAL_ALIGNED_64(t, v, ...) E1(LOCAL_ALIGNED_D(64, t, v, __VA_ARGS__,,))
Macro definitions for various function/variable attributes.
Utility Preprocessor macros.