]> git.sesse.net Git - x264/commitdiff
arm: implement x264_predict_4x4_v_armv6
authorJanne Grunau <janne-x264@jannau.net>
Thu, 13 Mar 2014 00:02:13 +0000 (01:02 +0100)
committerFiona Glaser <fiona@x264.com>
Tue, 22 Apr 2014 22:37:47 +0000 (15:37 -0700)
Alone probably not worth it but allows use of predict_4x4_dc|h_armv6
in intra_sad|satd_x3_4x4_neon.

common/arm/predict-a.S
common/arm/predict-c.c
common/arm/predict.h
common/pixel.c

index ed805b5cf8fb4c3400d6baf94078c5df782dc165..ca28ff8f3573c61849875eebf6b84ccafba5b6ea 100644 (file)
@@ -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]
index 204051b08f8024a8f7b760413b61ee9624f0e922..b9ad2623e6e143d2872b9354a9884be9e6d1543f 100644 (file)
@@ -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;
 
index 6cf2f5f311f49ad80118bc737e6e0d064fc5047b..26e1e93e73690660430436eb8790ee30e0af6706 100644 (file)
@@ -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] );
index fd1092a263f7eea826568a159cc0e2ef24ba1ce0..7390c983177055d5230089e5415cdc04420800a9 100644 (file)
@@ -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 )