From: Janne Grunau Date: Thu, 13 Mar 2014 00:02:13 +0000 (+0100) Subject: arm: implement x264_predict_4x4_v_armv6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6002ebace8194d17ee0ba607ff82c4f9075dd2d;p=libx264 arm: implement x264_predict_4x4_v_armv6 Alone probably not worth it but allows use of predict_4x4_dc|h_armv6 in intra_sad|satd_x3_4x4_neon. --- diff --git a/common/arm/predict-a.S b/common/arm/predict-a.S index ed805b5c..ca28ff8f 100644 --- a/common/arm/predict-a.S +++ b/common/arm/predict-a.S @@ -79,6 +79,15 @@ function x264_predict_4x4_h_armv6 bx lr .endfunc +function x264_predict_4x4_v_armv6 + ldr r1, [r0, #0 - 1 * FDEC_STRIDE] + str r1, [r0, #0 + 0 * FDEC_STRIDE] + str r1, [r0, #0 + 1 * FDEC_STRIDE] + str r1, [r0, #0 + 2 * FDEC_STRIDE] + str r1, [r0, #0 + 3 * FDEC_STRIDE] + bx lr +.endfunc + function x264_predict_4x4_dc_armv6 mov ip, #0 ldr r1, [r0, #-FDEC_STRIDE] diff --git a/common/arm/predict-c.c b/common/arm/predict-c.c index 204051b0..b9ad2623 100644 --- a/common/arm/predict-c.c +++ b/common/arm/predict-c.c @@ -64,6 +64,7 @@ void x264_predict_4x4_init_arm( int cpu, x264_predict_t pf[12] ) #if !HIGH_BIT_DEPTH pf[I_PRED_4x4_H] = x264_predict_4x4_h_armv6; + pf[I_PRED_4x4_V] = x264_predict_4x4_v_armv6; pf[I_PRED_4x4_DC] = x264_predict_4x4_dc_armv6; pf[I_PRED_4x4_DDR] = x264_predict_4x4_ddr_armv6; diff --git a/common/arm/predict.h b/common/arm/predict.h index 6cf2f5f3..26e1e93e 100644 --- a/common/arm/predict.h +++ b/common/arm/predict.h @@ -26,6 +26,9 @@ #ifndef X264_ARM_PREDICT_H #define X264_ARM_PREDICT_H +void x264_predict_4x4_dc_armv6( uint8_t *src ); +void x264_predict_4x4_v_armv6( uint8_t *src ); +void x264_predict_4x4_h_armv6( uint8_t *src ); void x264_predict_8x8_v_neon( pixel *src, pixel edge[36] ); void x264_predict_8x8_h_neon( pixel *src, pixel edge[36] ); void x264_predict_8x8_dc_neon( pixel *src, pixel edge[36] ); diff --git a/common/pixel.c b/common/pixel.c index fd1092a2..7390c983 100644 --- a/common/pixel.c +++ b/common/pixel.c @@ -593,8 +593,8 @@ INTRA_MBCMP(satd, 8x16, dc, h, v, c, _xop, _mmx2 ) #endif #endif #if !HIGH_BIT_DEPTH && HAVE_ARMV6 -INTRA_MBCMP( sad, 4x4, v, h, dc, , _neon, _c ) -INTRA_MBCMP(satd, 4x4, v, h, dc, , _neon, _c ) +INTRA_MBCMP( sad, 4x4, v, h, dc, , _neon, _armv6 ) +INTRA_MBCMP(satd, 4x4, v, h, dc, , _neon, _armv6 ) INTRA_MBCMP( sad, 8x8, dc, h, v, c, _neon, _neon ) INTRA_MBCMP(satd, 8x8, dc, h, v, c, _neon, _neon ) INTRA_MBCMP( sad, 8x16, dc, h, v, c, _neon, _c )