MMX 10-bit predict_8x8c_h and predict_8x16c_h
authorShitiz Garg <mail@dragooon.net>
Sat, 3 Dec 2011 23:34:57 +0000 (15:34 -0800)
committerJason Garrett-Glaser <jason@x264.com>
Sun, 15 Jan 2012 21:04:25 +0000 (13:04 -0800)
From Google Code-In.

common/x86/predict-a.asm
common/x86/predict-c.c
common/x86/predict.h

index 15959a5..f87191c 100644 (file)
@@ -1663,7 +1663,6 @@ PREDICT_8x16C_V
 ;-----------------------------------------------------------------------------
 %ifdef HIGH_BIT_DEPTH
 
-INIT_XMM sse2
 %macro PREDICT_C_H 1
 cglobal predict_8x%1c_h, 1,1
     add        r0, FDEC_STRIDEB*4
@@ -1672,11 +1671,18 @@ cglobal predict_8x%1c_h, 1,1
     movd       m0, [r0+FDEC_STRIDEB*Y-SIZEOF_PIXEL*2]
     SPLATW     m0, m0, 1
     mova [r0+FDEC_STRIDEB*Y], m0
+%if mmsize == 8
+    mova [r0+FDEC_STRIDEB*Y+8], m0
+%endif
 %assign Y Y+1
 %endrep
     RET
 %endmacro
 
+INIT_MMX mmx2
+PREDICT_C_H 8
+PREDICT_C_H 16
+INIT_XMM sse2
 PREDICT_C_H 8
 PREDICT_C_H 16
 
index c168deb..8385ff9 100644 (file)
@@ -338,6 +338,7 @@ void x264_predict_8x8c_init_mmx( int cpu, x264_predict_t pf[7] )
     if( !(cpu&X264_CPU_MMX2) )
         return;
     pf[I_PRED_CHROMA_DC]      = x264_predict_8x8c_dc_mmx2;
+    pf[I_PRED_CHROMA_H]       = x264_predict_8x8c_h_mmx2;
     if( !(cpu&X264_CPU_SSE2) )
         return;
     pf[I_PRED_CHROMA_V]       = x264_predict_8x8c_v_sse2;
@@ -386,6 +387,7 @@ void x264_predict_8x16c_init_mmx( int cpu, x264_predict_t pf[7] )
     if( !(cpu&X264_CPU_MMX2) )
         return;
     pf[I_PRED_CHROMA_DC]      = x264_predict_8x16c_dc_mmx2;
+    pf[I_PRED_CHROMA_H]       = x264_predict_8x16c_h_mmx2;
     if( !(cpu&X264_CPU_SSE2) )
         return;
     pf[I_PRED_CHROMA_V]       = x264_predict_8x16c_v_sse2;
index 708830c..5d87cae 100644 (file)
@@ -56,7 +56,7 @@ void x264_predict_8x16c_dc_top_mmx2( uint8_t *src );
 void x264_predict_8x16c_dc_top_sse2( uint16_t *src );
 void x264_predict_8x16c_v_mmx( uint8_t *src );
 void x264_predict_8x16c_v_sse2( uint16_t *src );
-void x264_predict_8x16c_h_mmx2( uint8_t *src );
+void x264_predict_8x16c_h_mmx2( pixel *src );
 void x264_predict_8x16c_h_sse2( pixel *src );
 void x264_predict_8x16c_h_ssse3( uint8_t *src );
 void x264_predict_8x8c_p_core_mmx2( uint8_t *src, int i00, int b, int c );
@@ -68,7 +68,7 @@ void x264_predict_8x8c_dc_top_mmx2( uint8_t *src );
 void x264_predict_8x8c_dc_top_sse2( uint16_t *src );
 void x264_predict_8x8c_v_mmx( pixel *src );
 void x264_predict_8x8c_v_sse2( uint16_t *src );
-void x264_predict_8x8c_h_mmx2( uint8_t *src );
+void x264_predict_8x8c_h_mmx2( pixel *src );
 void x264_predict_8x8c_h_sse2( pixel *src );
 void x264_predict_8x8c_h_ssse3( uint8_t *src );
 void x264_predict_8x8_v_mmx2( uint8_t *src, uint8_t edge[36] );