diff options
author | Matt Oliver <protogonoi@gmail.com> | 2014-05-07 14:16:26 +1000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-05-07 15:02:45 +0200 |
commit | 1898c2f49da3151fbce04ecf35971005707a609d (patch) | |
tree | 8a34d0bdd66b30c062c1a24d8bdf7b9759d40d2a | |
parent | 134206ca7a3d395c827e6a041f7f01e5fb9e1693 (diff) | |
download | ffmpeg-1898c2f49da3151fbce04ecf35971005707a609d.tar.gz |
inline asm: fix arrays as named constraints.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/x86/cabac.h | 4 | ||||
-rw-r--r-- | libavcodec/x86/h264_i386.h | 4 | ||||
-rw-r--r-- | libavcodec/x86/idct_sse2_xvid.c | 2 | ||||
-rw-r--r-- | libavcodec/x86/lpc.c | 6 | ||||
-rw-r--r-- | libavutil/x86/asm.h | 6 | ||||
-rw-r--r-- | libswresample/x86/resample_mmx.h | 4 | ||||
-rw-r--r-- | libswscale/x86/yuv2rgb_template.c | 2 |
7 files changed, 17 insertions, 11 deletions
diff --git a/libavcodec/x86/cabac.h b/libavcodec/x86/cabac.h index 7c816dfd79..3510336f95 100644 --- a/libavcodec/x86/cabac.h +++ b/libavcodec/x86/cabac.h @@ -111,7 +111,7 @@ "2: \n\t" #else /* BROKEN_RELOCATIONS */ -#define TABLES_ARG NAMED_CONSTRAINTS_ADD(ff_h264_cabac_tables) +#define TABLES_ARG NAMED_CONSTRAINTS_ARRAY_ADD(ff_h264_cabac_tables) #define RIP_ARG #if HAVE_FAST_CMOV @@ -185,7 +185,7 @@ static av_always_inline int get_cabac_inline_x86(CABACContext *c, __asm__ volatile( "lea "MANGLE(ff_h264_cabac_tables)", %0 \n\t" : "=&r"(tables) - : NAMED_CONSTRAINTS(ff_h264_cabac_tables) + : NAMED_CONSTRAINTS_ARRAY(ff_h264_cabac_tables) ); #endif diff --git a/libavcodec/x86/h264_i386.h b/libavcodec/x86/h264_i386.h index 92c4b09dec..ef65cf86b7 100644 --- a/libavcodec/x86/h264_i386.h +++ b/libavcodec/x86/h264_i386.h @@ -55,7 +55,7 @@ static int decode_significance_x86(CABACContext *c, int max_coeff, __asm__ volatile( "lea "MANGLE(ff_h264_cabac_tables)", %0 \n\t" : "=&r"(tables) - : NAMED_CONSTRAINTS(ff_h264_cabac_tables) + : NAMED_CONSTRAINTS_ARRAY(ff_h264_cabac_tables) ); #endif @@ -131,7 +131,7 @@ static int decode_significance_8x8_x86(CABACContext *c, __asm__ volatile( "lea "MANGLE(ff_h264_cabac_tables)", %0 \n\t" : "=&r"(tables) - : NAMED_CONSTRAINTS(ff_h264_cabac_tables) + : NAMED_CONSTRAINTS_ARRAY(ff_h264_cabac_tables) ); #endif diff --git a/libavcodec/x86/idct_sse2_xvid.c b/libavcodec/x86/idct_sse2_xvid.c index 6dd2cb2168..a1810990cc 100644 --- a/libavcodec/x86/idct_sse2_xvid.c +++ b/libavcodec/x86/idct_sse2_xvid.c @@ -381,7 +381,7 @@ av_extern_inline void ff_idct_xvid_sse2(short *block) iLLM_PASS("%0") "6: \n\t" : "+r"(block) - : NAMED_CONSTRAINTS(m127,iTab1,walkenIdctRounders,iTab2,iTab3,iTab4,tan3,tan1,tan2,sqrt2) + : NAMED_CONSTRAINTS_ARRAY(m127,iTab1,walkenIdctRounders,iTab2,iTab3,iTab4,tan3,tan1,tan2,sqrt2) : XMM_CLOBBERS("%xmm0" , "%xmm1" , "%xmm2" , "%xmm3" , "%xmm4" , "%xmm5" , "%xmm6" , "%xmm7" ,) #if ARCH_X86_64 diff --git a/libavcodec/x86/lpc.c b/libavcodec/x86/lpc.c index bff26359f4..3a9493f728 100644 --- a/libavcodec/x86/lpc.c +++ b/libavcodec/x86/lpc.c @@ -72,7 +72,7 @@ static void lpc_apply_welch_window_sse2(const int32_t *data, int len, "3: \n\t" :"+&r"(i), "+&r"(j) :"r"(w_data+n2), "r"(data+n2), "m"(c), "r"(len) - NAMED_CONSTRAINTS_ADD(pd_1,pd_2) + NAMED_CONSTRAINTS_ARRAY_ADD(pd_1,pd_2) XMM_CLOBBERS_ONLY("%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm5", "%xmm6", "%xmm7") ); @@ -117,7 +117,7 @@ static void lpc_compute_autocorr_sse2(const double *data, int len, int lag, "movsd %%xmm2, 16(%1) \n\t" :"+&r"(i) :"r"(autoc+j), "r"(data+len), "r"(data+len-j) - NAMED_CONSTRAINTS_ADD(pd_1) + NAMED_CONSTRAINTS_ARRAY_ADD(pd_1) :"memory" ); } else { @@ -141,7 +141,7 @@ static void lpc_compute_autocorr_sse2(const double *data, int len, int lag, "movsd %%xmm1, %2 \n\t" :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1]) :"r"(data+len), "r"(data+len-j) - NAMED_CONSTRAINTS_ADD(pd_1) + NAMED_CONSTRAINTS_ARRAY_ADD(pd_1) ); } } diff --git a/libavutil/x86/asm.h b/libavutil/x86/asm.h index 5328e2bfc9..2cecc980a5 100644 --- a/libavutil/x86/asm.h +++ b/libavutil/x86/asm.h @@ -111,6 +111,8 @@ typedef int x86_reg; # define MANGLE(a) EXTERN_PREFIX LOCAL_MANGLE(a) # define NAMED_CONSTRAINTS_ADD(...) # define NAMED_CONSTRAINTS(...) +# define NAMED_CONSTRAINTS_ARRAY_ADD(...) +# define NAMED_CONSTRAINTS_ARRAY(...) #else /* When direct symbol references are used in code passed to a compiler that does not support them * then these references need to be converted to named asm constraints instead. @@ -141,6 +143,10 @@ typedef int x86_reg; # define NAMED_CONSTRAINTS_ADD(...) , FOR_EACH_VA(NAME_CONSTRAINT,__VA_ARGS__) // Same but without comma for when there are no previously defined constraints # define NAMED_CONSTRAINTS(...) FOR_EACH_VA(NAME_CONSTRAINT,__VA_ARGS__) + // Same as above NAMED_CONSTRAINTS except used for passing arrays/pointers instead of normal variables +# define NAME_CONSTRAINT_ARRAY(x) [x] "m"(*x) +# define NAMED_CONSTRAINTS_ARRAY_ADD(...) , FOR_EACH_VA(NAME_CONSTRAINT_ARRAY,__VA_ARGS__) +# define NAMED_CONSTRAINTS_ARRAY(...) FOR_EACH_VA(NAME_CONSTRAINT_ARRAY,__VA_ARGS__) #endif #endif /* AVUTIL_X86_ASM_H */ diff --git a/libswresample/x86/resample_mmx.h b/libswresample/x86/resample_mmx.h index 06f8da66e1..2bd48a9295 100644 --- a/libswresample/x86/resample_mmx.h +++ b/libswresample/x86/resample_mmx.h @@ -48,7 +48,7 @@ __asm__ volatile(\ : "r" (((uint8_t*)(src+sample_index))-len),\ "r" (((uint8_t*)filter)-len),\ "r" (dst+dst_index)\ - NAMED_CONSTRAINTS_ADD(ff_resample_int16_rounder)\ + NAMED_CONSTRAINTS_ARRAY_ADD(ff_resample_int16_rounder)\ ); #define LINEAR_CORE_INT16_MMX2 \ @@ -100,7 +100,7 @@ __asm__ volatile(\ : "r" (((uint8_t*)(src+sample_index))-len),\ "r" (((uint8_t*)filter)-len),\ "r" (dst+dst_index)\ - NAMED_CONSTRAINTS_ADD(ff_resample_int16_rounder)\ + NAMED_CONSTRAINTS_ARRAY_ADD(ff_resample_int16_rounder)\ XMM_CLOBBERS_ONLY("%xmm0", "%xmm1")\ ); diff --git a/libswscale/x86/yuv2rgb_template.c b/libswscale/x86/yuv2rgb_template.c index 2ff97e22e1..acb78f520e 100644 --- a/libswscale/x86/yuv2rgb_template.c +++ b/libswscale/x86/yuv2rgb_template.c @@ -141,7 +141,7 @@ #if COMPILE_TEMPLATE_MMXEXT #undef RGB_PACK24_B_OPERANDS -#define RGB_PACK24_B_OPERANDS NAMED_CONSTRAINTS_ADD(mask1101,mask0110,mask0100,mask0010,mask1001) +#define RGB_PACK24_B_OPERANDS NAMED_CONSTRAINTS_ARRAY_ADD(mask1101,mask0110,mask0100,mask0010,mask1001) #else #undef RGB_PACK24_B_OPERANDS #define RGB_PACK24_B_OPERANDS |