* commit '896a5bff64264f4d01ed98eacc97a67260c1e17e': arm: check if AS supports .dn Conflicts: configure libavcodec/arm/vc1dsp_init_neon.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.3
| @@ -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 | ||||