mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Merge commit '896a5bff64264f4d01ed98eacc97a67260c1e17e'
* commit '896a5bff64264f4d01ed98eacc97a67260c1e17e': arm: check if AS supports .dn Conflicts: configure libavcodec/arm/vc1dsp_init_neon.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
83e8650f77
35
configure
vendored
35
configure
vendored
@ -1718,6 +1718,7 @@ SYSTEM_FUNCS="
|
|||||||
"
|
"
|
||||||
|
|
||||||
TOOLCHAIN_FEATURES="
|
TOOLCHAIN_FEATURES="
|
||||||
|
as_dn_directive
|
||||||
asm_mod_q
|
asm_mod_q
|
||||||
attribute_may_alias
|
attribute_may_alias
|
||||||
attribute_packed
|
attribute_packed
|
||||||
@ -4267,6 +4268,20 @@ unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
|
|||||||
EOF
|
EOF
|
||||||
od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
|
od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
|
||||||
|
|
||||||
|
|
||||||
|
if enabled asm; then
|
||||||
|
enabled arm && nogas=die
|
||||||
|
enabled_all ppc altivec && nogas=warn
|
||||||
|
as=${gas:=$as}
|
||||||
|
check_as <<EOF && enable gnu_as || \
|
||||||
|
$nogas "GNU assembler not found, install gas-preprocessor"
|
||||||
|
.macro m n
|
||||||
|
\n: .int 0
|
||||||
|
.endm
|
||||||
|
m x
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
check_inline_asm inline_asm_labels '"1:\n"'
|
check_inline_asm inline_asm_labels '"1:\n"'
|
||||||
|
|
||||||
check_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
|
check_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
|
||||||
@ -4290,7 +4305,6 @@ float func(float a, float b){ return a+b; }
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
enabled thumb && check_cflags -mthumb || check_cflags -marm
|
enabled thumb && check_cflags -mthumb || check_cflags -marm
|
||||||
nogas=die
|
|
||||||
|
|
||||||
if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
|
if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
|
||||||
enable vfp_args
|
enable vfp_args
|
||||||
@ -4318,6 +4332,11 @@ EOF
|
|||||||
|
|
||||||
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
|
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
|
||||||
|
|
||||||
|
check_as <<EOF && enable as_dn_directive
|
||||||
|
ra .dn d0.i16
|
||||||
|
.unreq ra
|
||||||
|
EOF
|
||||||
|
|
||||||
[ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
|
[ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
|
||||||
|
|
||||||
elif enabled mips; then
|
elif enabled mips; then
|
||||||
@ -4351,9 +4370,6 @@ elif enabled ppc; then
|
|||||||
|
|
||||||
# AltiVec flags: The FSF version of GCC differs from the Apple version
|
# AltiVec flags: The FSF version of GCC differs from the Apple version
|
||||||
if enabled altivec; then
|
if enabled altivec; then
|
||||||
if ! enabled_any pic ppc64; then
|
|
||||||
nogas=warn
|
|
||||||
fi
|
|
||||||
check_cflags -maltivec -mabi=altivec &&
|
check_cflags -maltivec -mabi=altivec &&
|
||||||
{ check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
|
{ check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
|
||||||
check_cflags -faltivec
|
check_cflags -faltivec
|
||||||
@ -4439,17 +4455,6 @@ EOF
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if enabled asm; then
|
|
||||||
as=${gas:=$as}
|
|
||||||
check_as <<EOF && enable gnu_as || \
|
|
||||||
$nogas "GNU assembler not found, install gas-preprocessor"
|
|
||||||
.macro m n
|
|
||||||
\n: .int 0
|
|
||||||
.endm
|
|
||||||
m x
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
check_ldflags -Wl,--as-needed
|
check_ldflags -Wl,--as-needed
|
||||||
|
|
||||||
if check_func dlopen; then
|
if check_func dlopen; then
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
#include "libavcodec/vc1dsp.h"
|
#include "libavcodec/vc1dsp.h"
|
||||||
#include "vc1dsp.h"
|
#include "vc1dsp.h"
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
void ff_vc1_inv_trans_8x8_neon(int16_t *block);
|
void ff_vc1_inv_trans_8x8_neon(int16_t *block);
|
||||||
void ff_vc1_inv_trans_4x8_neon(uint8_t *dest, int linesize, int16_t *block);
|
void ff_vc1_inv_trans_4x8_neon(uint8_t *dest, int linesize, int16_t *block);
|
||||||
void ff_vc1_inv_trans_8x4_neon(uint8_t *dest, int linesize, int16_t *block);
|
void ff_vc1_inv_trans_8x4_neon(uint8_t *dest, int linesize, int16_t *block);
|
||||||
@ -93,6 +95,7 @@ av_cold void ff_vc1dsp_init_neon(VC1DSPContext *dsp)
|
|||||||
dsp->vc1_inv_trans_4x4_dc = ff_vc1_inv_trans_4x4_dc_neon;
|
dsp->vc1_inv_trans_4x4_dc = ff_vc1_inv_trans_4x4_dc_neon;
|
||||||
|
|
||||||
dsp->put_vc1_mspel_pixels_tab[1][ 0] = ff_put_pixels8x8_neon;
|
dsp->put_vc1_mspel_pixels_tab[1][ 0] = ff_put_pixels8x8_neon;
|
||||||
|
if (HAVE_AS_DN_DIRECTIVE) {
|
||||||
FN_ASSIGN(1, 0);
|
FN_ASSIGN(1, 0);
|
||||||
FN_ASSIGN(2, 0);
|
FN_ASSIGN(2, 0);
|
||||||
FN_ASSIGN(3, 0);
|
FN_ASSIGN(3, 0);
|
||||||
@ -111,6 +114,7 @@ av_cold void ff_vc1dsp_init_neon(VC1DSPContext *dsp)
|
|||||||
FN_ASSIGN(1, 3);
|
FN_ASSIGN(1, 3);
|
||||||
FN_ASSIGN(2, 3);
|
FN_ASSIGN(2, 3);
|
||||||
FN_ASSIGN(3, 3);
|
FN_ASSIGN(3, 3);
|
||||||
|
}
|
||||||
|
|
||||||
dsp->put_no_rnd_vc1_chroma_pixels_tab[0] = ff_put_vc1_chroma_mc8_neon;
|
dsp->put_no_rnd_vc1_chroma_pixels_tab[0] = ff_put_vc1_chroma_mc8_neon;
|
||||||
dsp->avg_no_rnd_vc1_chroma_pixels_tab[0] = ff_avg_vc1_chroma_mc8_neon;
|
dsp->avg_no_rnd_vc1_chroma_pixels_tab[0] = ff_avg_vc1_chroma_mc8_neon;
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
#include "libavutil/arm/asm.S"
|
#include "libavutil/arm/asm.S"
|
||||||
#include "neon.S"
|
#include "neon.S"
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
@ Transpose rows into columns of a matrix of 16-bit elements. For 4x4, pass
|
@ Transpose rows into columns of a matrix of 16-bit elements. For 4x4, pass
|
||||||
@ double-word registers, for 8x4, pass quad-word registers.
|
@ double-word registers, for 8x4, pass quad-word registers.
|
||||||
.macro transpose16 r0, r1, r2, r3
|
.macro transpose16 r0, r1, r2, r3
|
||||||
@ -661,6 +663,7 @@ function ff_vc1_inv_trans_4x4_neon, export=1
|
|||||||
bx lr
|
bx lr
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
#if HAVE_AS_DN_DIRECTIVE
|
||||||
@ The absolute value of multiplication constants from vc1_mspel_filter and vc1_mspel_{ver,hor}_filter_16bits.
|
@ The absolute value of multiplication constants from vc1_mspel_filter and vc1_mspel_{ver,hor}_filter_16bits.
|
||||||
@ The sign is embedded in the code below that carries out the multiplication (mspel_filter{,.16}).
|
@ The sign is embedded in the code below that carries out the multiplication (mspel_filter{,.16}).
|
||||||
#define MSPEL_MODE_1_MUL_CONSTANTS 4 53 18 3
|
#define MSPEL_MODE_1_MUL_CONSTANTS 4 53 18 3
|
||||||
@ -984,6 +987,7 @@ PUT_VC1_MSPEL_MC_V_ONLY(2)
|
|||||||
PUT_VC1_MSPEL_MC_V_ONLY(3)
|
PUT_VC1_MSPEL_MC_V_ONLY(3)
|
||||||
|
|
||||||
#undef PUT_VC1_MSPEL_MC_V_ONLY
|
#undef PUT_VC1_MSPEL_MC_V_ONLY
|
||||||
|
#endif
|
||||||
|
|
||||||
function ff_put_pixels8x8_neon, export=1
|
function ff_put_pixels8x8_neon, export=1
|
||||||
vld1.64 {d0}, [r1], r2
|
vld1.64 {d0}, [r1], r2
|
||||||
|
Loading…
Reference in New Issue
Block a user