Build armv7a-only code
Allow disabling the more generic NEON code. Use filtered option to disable rtcd code. Change-Id: Icb4500c1a2bac16eed3c5e3ec0c35e92e6bbbb9f
This commit is contained in:
parent
c6b8fce22a
commit
4dcc6d9707
@ -518,7 +518,7 @@ process_common_cmdline() {
|
|||||||
--enable-?*|--disable-?*)
|
--enable-?*|--disable-?*)
|
||||||
eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
|
eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
|
||||||
if echo "${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null; then
|
if echo "${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null; then
|
||||||
[ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}${opt} "
|
[ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}--disable-${option} "
|
||||||
elif [ $action = "disable" ] && ! disabled $option ; then
|
elif [ $action = "disable" ] && ! disabled $option ; then
|
||||||
echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
|
echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
|
||||||
die_unknown $opt
|
die_unknown $opt
|
||||||
@ -835,7 +835,7 @@ EOF
|
|||||||
check_add_cflags -march=armv7-a -mfloat-abi=${float_abi}
|
check_add_cflags -march=armv7-a -mfloat-abi=${float_abi}
|
||||||
check_add_asflags -march=armv7-a -mfloat-abi=${float_abi}
|
check_add_asflags -march=armv7-a -mfloat-abi=${float_abi}
|
||||||
|
|
||||||
if enabled neon
|
if enabled neon || enabled neon_asm
|
||||||
then
|
then
|
||||||
check_add_cflags -mfpu=neon #-ftree-vectorize
|
check_add_cflags -mfpu=neon #-ftree-vectorize
|
||||||
check_add_asflags -mfpu=neon
|
check_add_asflags -mfpu=neon
|
||||||
@ -882,7 +882,7 @@ EOF
|
|||||||
tune_asflags="--cpu="
|
tune_asflags="--cpu="
|
||||||
if [ -z "${tune_cpu}" ]; then
|
if [ -z "${tune_cpu}" ]; then
|
||||||
if [ ${tgt_isa} = "armv7" ]; then
|
if [ ${tgt_isa} = "armv7" ]; then
|
||||||
if enabled neon
|
if enabled neon || enabled neon_asm
|
||||||
then
|
then
|
||||||
check_add_cflags --fpu=softvfp+vfpv3
|
check_add_cflags --fpu=softvfp+vfpv3
|
||||||
check_add_asflags --fpu=softvfp+vfpv3
|
check_add_asflags --fpu=softvfp+vfpv3
|
||||||
|
@ -25,20 +25,24 @@ extern prototype_loopfilter(vp8_mbloop_filter_horizontal_edge_armv6);
|
|||||||
extern prototype_loopfilter(vp8_mbloop_filter_vertical_edge_armv6);
|
extern prototype_loopfilter(vp8_mbloop_filter_vertical_edge_armv6);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_NEON_ASM
|
#if HAVE_NEON_ASM || HAVE_NEON
|
||||||
typedef void loopfilter_y_neon(unsigned char *src, int pitch,
|
typedef void loopfilter_y_neon(unsigned char *src, int pitch,
|
||||||
unsigned char blimit, unsigned char limit, unsigned char thresh);
|
unsigned char blimit, unsigned char limit, unsigned char thresh);
|
||||||
typedef void loopfilter_uv_neon(unsigned char *u, int pitch,
|
typedef void loopfilter_uv_neon(unsigned char *u, int pitch,
|
||||||
unsigned char blimit, unsigned char limit, unsigned char thresh,
|
unsigned char blimit, unsigned char limit, unsigned char thresh,
|
||||||
unsigned char *v);
|
unsigned char *v);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_NEON_ASM
|
||||||
extern loopfilter_y_neon vp8_loop_filter_horizontal_edge_y_neon;
|
extern loopfilter_y_neon vp8_loop_filter_horizontal_edge_y_neon;
|
||||||
extern loopfilter_y_neon vp8_loop_filter_vertical_edge_y_neon;
|
extern loopfilter_y_neon vp8_loop_filter_vertical_edge_y_neon;
|
||||||
extern loopfilter_y_neon vp8_mbloop_filter_horizontal_edge_y_neon;
|
|
||||||
extern loopfilter_y_neon vp8_mbloop_filter_vertical_edge_y_neon;
|
|
||||||
|
|
||||||
extern loopfilter_uv_neon vp8_loop_filter_horizontal_edge_uv_neon;
|
extern loopfilter_uv_neon vp8_loop_filter_horizontal_edge_uv_neon;
|
||||||
extern loopfilter_uv_neon vp8_loop_filter_vertical_edge_uv_neon;
|
extern loopfilter_uv_neon vp8_loop_filter_vertical_edge_uv_neon;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_NEON
|
||||||
|
extern loopfilter_y_neon vp8_mbloop_filter_horizontal_edge_y_neon;
|
||||||
|
extern loopfilter_y_neon vp8_mbloop_filter_vertical_edge_y_neon;
|
||||||
extern loopfilter_uv_neon vp8_mbloop_filter_horizontal_edge_uv_neon;
|
extern loopfilter_uv_neon vp8_mbloop_filter_horizontal_edge_uv_neon;
|
||||||
extern loopfilter_uv_neon vp8_mbloop_filter_vertical_edge_uv_neon;
|
extern loopfilter_uv_neon vp8_mbloop_filter_vertical_edge_uv_neon;
|
||||||
#endif
|
#endif
|
||||||
@ -118,7 +122,7 @@ void vp8_loop_filter_bvs_armv6(unsigned char *y_ptr, int y_stride,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_NEON_ASM
|
#if HAVE_NEON
|
||||||
/* NEON loopfilter functions */
|
/* NEON loopfilter functions */
|
||||||
/* Horizontal MB filtering */
|
/* Horizontal MB filtering */
|
||||||
void vp8_loop_filter_mbh_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
|
void vp8_loop_filter_mbh_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
|
||||||
@ -146,7 +150,9 @@ void vp8_loop_filter_mbv_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsign
|
|||||||
if (u_ptr)
|
if (u_ptr)
|
||||||
vp8_mbloop_filter_vertical_edge_uv_neon(u_ptr, uv_stride, mblim, lim, hev_thr, v_ptr);
|
vp8_mbloop_filter_vertical_edge_uv_neon(u_ptr, uv_stride, mblim, lim, hev_thr, v_ptr);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_NEON_ASM
|
||||||
/* Horizontal B Filtering */
|
/* Horizontal B Filtering */
|
||||||
void vp8_loop_filter_bh_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
|
void vp8_loop_filter_bh_neon(unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr,
|
||||||
int y_stride, int uv_stride, loop_filter_info *lfi)
|
int y_stride, int uv_stride, loop_filter_info *lfi)
|
||||||
|
@ -54,9 +54,8 @@ $vp8_dequant_idct_add_y_block_dspr2=vp8_dequant_idct_add_y_block_dspr2;
|
|||||||
# Loopfilter
|
# Loopfilter
|
||||||
#
|
#
|
||||||
add_proto qw/void vp8_loop_filter_mbv/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
add_proto qw/void vp8_loop_filter_mbv/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
||||||
specialize qw/vp8_loop_filter_mbv mmx sse2 media neon_asm dspr2/;
|
specialize qw/vp8_loop_filter_mbv mmx sse2 media neon dspr2/;
|
||||||
$vp8_loop_filter_mbv_media=vp8_loop_filter_mbv_armv6;
|
$vp8_loop_filter_mbv_media=vp8_loop_filter_mbv_armv6;
|
||||||
$vp8_loop_filter_mbv_neon_asm=vp8_loop_filter_mbv_neon;
|
|
||||||
$vp8_loop_filter_mbv_dspr2=vp8_loop_filter_mbv_dspr2;
|
$vp8_loop_filter_mbv_dspr2=vp8_loop_filter_mbv_dspr2;
|
||||||
|
|
||||||
add_proto qw/void vp8_loop_filter_bv/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
add_proto qw/void vp8_loop_filter_bv/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
||||||
@ -66,9 +65,8 @@ $vp8_loop_filter_bv_neon_asm=vp8_loop_filter_bv_neon;
|
|||||||
$vp8_loop_filter_bv_dspr2=vp8_loop_filter_bv_dspr2;
|
$vp8_loop_filter_bv_dspr2=vp8_loop_filter_bv_dspr2;
|
||||||
|
|
||||||
add_proto qw/void vp8_loop_filter_mbh/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
add_proto qw/void vp8_loop_filter_mbh/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
||||||
specialize qw/vp8_loop_filter_mbh mmx sse2 media neon_asm dspr2/;
|
specialize qw/vp8_loop_filter_mbh mmx sse2 media neon dspr2/;
|
||||||
$vp8_loop_filter_mbh_media=vp8_loop_filter_mbh_armv6;
|
$vp8_loop_filter_mbh_media=vp8_loop_filter_mbh_armv6;
|
||||||
$vp8_loop_filter_mbh_neon_asm=vp8_loop_filter_mbh_neon;
|
|
||||||
$vp8_loop_filter_mbh_dspr2=vp8_loop_filter_mbh_dspr2;
|
$vp8_loop_filter_mbh_dspr2=vp8_loop_filter_mbh_dspr2;
|
||||||
|
|
||||||
add_proto qw/void vp8_loop_filter_bh/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
add_proto qw/void vp8_loop_filter_bh/, "unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi";
|
||||||
@ -87,12 +85,12 @@ $vp8_loop_filter_simple_mbv_media=vp8_loop_filter_simple_vertical_edge_armv6;
|
|||||||
$vp8_loop_filter_simple_mbv_neon_asm=vp8_loop_filter_mbvs_neon;
|
$vp8_loop_filter_simple_mbv_neon_asm=vp8_loop_filter_mbvs_neon;
|
||||||
|
|
||||||
add_proto qw/void vp8_loop_filter_simple_mbh/, "unsigned char *y, int ystride, const unsigned char *blimit";
|
add_proto qw/void vp8_loop_filter_simple_mbh/, "unsigned char *y, int ystride, const unsigned char *blimit";
|
||||||
specialize qw/vp8_loop_filter_simple_mbh mmx sse2 media neon_asm/;
|
specialize qw/vp8_loop_filter_simple_mbh mmx sse2 media neon/;
|
||||||
$vp8_loop_filter_simple_mbh_c=vp8_loop_filter_simple_horizontal_edge_c;
|
$vp8_loop_filter_simple_mbh_c=vp8_loop_filter_simple_horizontal_edge_c;
|
||||||
$vp8_loop_filter_simple_mbh_mmx=vp8_loop_filter_simple_horizontal_edge_mmx;
|
$vp8_loop_filter_simple_mbh_mmx=vp8_loop_filter_simple_horizontal_edge_mmx;
|
||||||
$vp8_loop_filter_simple_mbh_sse2=vp8_loop_filter_simple_horizontal_edge_sse2;
|
$vp8_loop_filter_simple_mbh_sse2=vp8_loop_filter_simple_horizontal_edge_sse2;
|
||||||
$vp8_loop_filter_simple_mbh_media=vp8_loop_filter_simple_horizontal_edge_armv6;
|
$vp8_loop_filter_simple_mbh_media=vp8_loop_filter_simple_horizontal_edge_armv6;
|
||||||
$vp8_loop_filter_simple_mbh_neon_asm=vp8_loop_filter_mbhs_neon;
|
$vp8_loop_filter_simple_mbh_neon=vp8_loop_filter_mbhs_neon;
|
||||||
|
|
||||||
add_proto qw/void vp8_loop_filter_simple_bv/, "unsigned char *y, int ystride, const unsigned char *blimit";
|
add_proto qw/void vp8_loop_filter_simple_bv/, "unsigned char *y, int ystride, const unsigned char *blimit";
|
||||||
specialize qw/vp8_loop_filter_simple_bv mmx sse2 media neon_asm/;
|
specialize qw/vp8_loop_filter_simple_bv mmx sse2 media neon_asm/;
|
||||||
@ -103,12 +101,12 @@ $vp8_loop_filter_simple_bv_media=vp8_loop_filter_bvs_armv6;
|
|||||||
$vp8_loop_filter_simple_bv_neon_asm=vp8_loop_filter_bvs_neon;
|
$vp8_loop_filter_simple_bv_neon_asm=vp8_loop_filter_bvs_neon;
|
||||||
|
|
||||||
add_proto qw/void vp8_loop_filter_simple_bh/, "unsigned char *y, int ystride, const unsigned char *blimit";
|
add_proto qw/void vp8_loop_filter_simple_bh/, "unsigned char *y, int ystride, const unsigned char *blimit";
|
||||||
specialize qw/vp8_loop_filter_simple_bh mmx sse2 media neon_asm/;
|
specialize qw/vp8_loop_filter_simple_bh mmx sse2 media neon/;
|
||||||
$vp8_loop_filter_simple_bh_c=vp8_loop_filter_bhs_c;
|
$vp8_loop_filter_simple_bh_c=vp8_loop_filter_bhs_c;
|
||||||
$vp8_loop_filter_simple_bh_mmx=vp8_loop_filter_bhs_mmx;
|
$vp8_loop_filter_simple_bh_mmx=vp8_loop_filter_bhs_mmx;
|
||||||
$vp8_loop_filter_simple_bh_sse2=vp8_loop_filter_bhs_sse2;
|
$vp8_loop_filter_simple_bh_sse2=vp8_loop_filter_bhs_sse2;
|
||||||
$vp8_loop_filter_simple_bh_media=vp8_loop_filter_bhs_armv6;
|
$vp8_loop_filter_simple_bh_media=vp8_loop_filter_bhs_armv6;
|
||||||
$vp8_loop_filter_simple_bh_neon_asm=vp8_loop_filter_bhs_neon;
|
$vp8_loop_filter_simple_bh_neon=vp8_loop_filter_bhs_neon;
|
||||||
|
|
||||||
#
|
#
|
||||||
# IDCT
|
# IDCT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user