Commit 19eec741 authored by diego's avatar diego

Add check whether the compiler/assembler supports 10 or more operands.

thanks to Loren for some help with the asm statements


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@17151 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 785e306c
...@@ -898,6 +898,7 @@ HAVE_LIST=" ...@@ -898,6 +898,7 @@ HAVE_LIST="
sys_select_h sys_select_h
sys_soundcard_h sys_soundcard_h
sys_videoio_h sys_videoio_h
ten_operands
termios_h termios_h
threads threads
truncf truncf
...@@ -1778,6 +1779,18 @@ EOF ...@@ -1778,6 +1779,18 @@ EOF
# check wether EBX is available on x86 # check wether EBX is available on x86
check_asm ebx_available '"":::"%ebx"' check_asm ebx_available '"":::"%ebx"'
# check whether more than 10 operands are supported
check_cc <<EOF && enable ten_operands
int main(void) {
int x=0;
__asm__ volatile(
""
:"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
);
return 0;
}
EOF
# check whether binutils is new enough to compile SSSE3/MMX2 # check whether binutils is new enough to compile SSSE3/MMX2
enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"' enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
enabled mmx2 && check_asm mmx2 '"movss %xmm0, %xmm0"' enabled mmx2 && check_asm mmx2 '"movss %xmm0, %xmm0"'
...@@ -2190,6 +2203,7 @@ if enabled x86; then ...@@ -2190,6 +2203,7 @@ if enabled x86; then
echo "CMOV is fast ${fast_cmov-no}" echo "CMOV is fast ${fast_cmov-no}"
echo "EBX available ${ebx_available-no}" echo "EBX available ${ebx_available-no}"
echo "EBP available ${ebp_available-no}" echo "EBP available ${ebp_available-no}"
echo "10 operands supported ${ten_operands-no}"
fi fi
if enabled arm; then if enabled arm; then
echo "ARMv5TE enabled ${armv5te-no}" echo "ARMv5TE enabled ${armv5te-no}"
......
...@@ -548,7 +548,7 @@ static void add_bytes_l2_mmx(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w){ ...@@ -548,7 +548,7 @@ static void add_bytes_l2_mmx(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w){
dst[i] = src1[i] + src2[i]; dst[i] = src1[i] + src2[i];
} }
#if HAVE_7REGS #if HAVE_7REGS && HAVE_TEN_OPERANDS
static void add_hfyu_median_prediction_cmov(uint8_t *dst, uint8_t *top, uint8_t *diff, int w, int *left, int *left_top) { static void add_hfyu_median_prediction_cmov(uint8_t *dst, uint8_t *top, uint8_t *diff, int w, int *left, int *left_top) {
x86_reg w2 = -w; x86_reg w2 = -w;
x86_reg x; x86_reg x;
...@@ -2799,7 +2799,7 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) ...@@ -2799,7 +2799,7 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
#if HAVE_YASM #if HAVE_YASM
c->add_hfyu_median_prediction = ff_add_hfyu_median_prediction_mmx2; c->add_hfyu_median_prediction = ff_add_hfyu_median_prediction_mmx2;
#endif #endif
#if HAVE_7REGS #if HAVE_7REGS && HAVE_TEN_OPERANDS
if( mm_flags&FF_MM_3DNOW ) if( mm_flags&FF_MM_3DNOW )
c->add_hfyu_median_prediction = add_hfyu_median_prediction_cmov; c->add_hfyu_median_prediction = add_hfyu_median_prediction_cmov;
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment