mirror of https://git.ffmpeg.org/ffmpeg.git
Add check whether the compiler/assembler supports 10 or more operands.
thanks to Loren for some help with the asm statements Originally committed as revision 17151 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
80e58c6153
commit
d3a4b4e09c
|
@ -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
|
||||||
# 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
|
||||||
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){
|
||||||
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)
|
||||||
#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
|
||||||
|
|
Loading…
Reference in New Issue