]> granicus.if.org Git - libx264/commitdiff
update altivec zigzags
authorManuel Rommel <maaanuuu@gmx.net>
Thu, 20 Mar 2008 19:21:16 +0000 (13:21 -0600)
committerLoren Merritt <pengvado@akuvian.org>
Thu, 20 Mar 2008 19:21:16 +0000 (13:21 -0600)
common/ppc/dct.c
common/ppc/dct.h

index 2be989373436d7f00d9c3649d48781b62d86f548..024a157a08fa836cdc5978cc801814cc25c96434 100644 (file)
@@ -456,11 +456,10 @@ void x264_add16x16_idct8_altivec( uint8_t *dst, int16_t dct[4][8][8] )
     x264_add8x8_idct8_altivec( &dst[8*FDEC_STRIDE+8], dct[3] );
 }
 
-void x264_zigzag_scan_4x4_frame_altivec( int level[16], int16_t dct[4][4] )
+void x264_zigzag_scan_4x4_frame_altivec( int16_t level[16], int16_t dct[4][4] )
 {
     vec_s16_t dct0v, dct1v;
     vec_s16_t tmp0v, tmp1v;
-    vec_s32_t level0v, level1v, level2v, level3v;
 
     dct0v = vec_ld(0x00, (int16_t*)dct);
     dct1v = vec_ld(0x10, (int16_t*)dct);
@@ -471,22 +470,14 @@ void x264_zigzag_scan_4x4_frame_altivec( int level[16], int16_t dct[4][4] )
     tmp0v = vec_perm( dct0v, dct1v, sel0 );
     tmp1v = vec_perm( dct0v, dct1v, sel1 );
 
-    level0v = vec_unpackh( tmp0v );
-    level1v = vec_unpackl( tmp0v );
-    level2v = vec_unpackh( tmp1v );
-    level3v = vec_unpackl( tmp1v );
-
-    vec_st( level0v, 0x00, level );
-    vec_st( level1v, 0x10, level );
-    vec_st( level2v, 0x20, level );
-    vec_st( level3v, 0x30, level );
+    vec_st( tmp0v, 0x00, level );
+    vec_st( tmp1v, 0x10, level );
 }
 
-void x264_zigzag_scan_4x4_field_altivec( int level[16], int16_t dct[4][4] )
+void x264_zigzag_scan_4x4_field_altivec( int16_t level[16], int16_t dct[4][4] )
 {
     vec_s16_t dct0v, dct1v;
     vec_s16_t tmp0v, tmp1v;
-    vec_s32_t level0v, level1v, level2v, level3v;
 
     dct0v = vec_ld(0x00, (int16_t*)dct);
     dct1v = vec_ld(0x10, (int16_t*)dct);
@@ -496,22 +487,14 @@ void x264_zigzag_scan_4x4_field_altivec( int level[16], int16_t dct[4][4] )
     tmp0v = vec_perm( dct0v, dct1v, sel0 );
     tmp1v = dct1v;
 
-    level0v = vec_unpackh( tmp0v );
-    level1v = vec_unpackl( tmp0v );
-    level2v = vec_unpackh( tmp1v );
-    level3v = vec_unpackl( tmp1v );
-
-    vec_st( level0v, 0x00, level );
-    vec_st( level1v, 0x10, level );
-    vec_st( level2v, 0x20, level );
-    vec_st( level3v, 0x30, level );
+    vec_st( tmp0v, 0x00, level );
+    vec_st( tmp1v, 0x10, level );
 }
 
-void x264_zigzag_scan_4x4ac_frame_altivec( int level[15], int16_t dct[4][4] )
+void x264_zigzag_scan_4x4ac_frame_altivec( int16_t level[15], int16_t dct[4][4] )
 {
     vec_s16_t dct0v, dct1v;
     vec_s16_t tmp0v, tmp1v;
-    vec_s32_t level0v, level1v, level2v, level3v;
 
     dct0v = vec_ld(0x00, (int16_t*)dct);
     dct1v = vec_ld(0x10, (int16_t*)dct);
@@ -522,22 +505,14 @@ void x264_zigzag_scan_4x4ac_frame_altivec( int level[15], int16_t dct[4][4] )
     tmp0v = vec_perm( dct0v, dct1v, sel0 );
     tmp1v = vec_perm( dct0v, dct1v, sel1 );
 
-    level0v = vec_unpackh( tmp0v );
-    level1v = vec_unpackl( tmp0v );
-    level2v = vec_unpackh( tmp1v );
-    level3v = vec_unpackl( tmp1v );
-
-    vec_st( level0v, 0x00, level );
-    vec_st( level1v, 0x10, level );
-    vec_st( level2v, 0x20, level );
-    vec_st( level3v, 0x30, level ); // FIXME?: write level[15]
+    vec_st( tmp0v, 0x00, level );
+    vec_st( tmp1v, 0x10, level );
 }
 
-void x264_zigzag_scan_4x4ac_field_altivec( int level[15], int16_t dct[4][4] )
+void x264_zigzag_scan_4x4ac_field_altivec( int16_t level[15], int16_t dct[4][4] )
 {
     vec_s16_t dct0v, dct1v;
     vec_s16_t tmp0v, tmp1v;
-    vec_s32_t level0v, level1v, level2v, level3v;
 
     dct0v = vec_ld(0x00, (int16_t*)dct);
     dct1v = vec_ld(0x10, (int16_t*)dct);
@@ -548,13 +523,6 @@ void x264_zigzag_scan_4x4ac_field_altivec( int level[15], int16_t dct[4][4] )
     tmp0v = vec_perm( dct0v, dct1v, sel0 );
     tmp1v = vec_perm( dct0v, dct1v, sel1 );
 
-    level0v = vec_unpackh( tmp0v );
-    level1v = vec_unpackl( tmp0v );
-    level2v = vec_unpackh( tmp1v );
-    level3v = vec_unpackl( tmp1v );
-
-    vec_st( level0v, 0x00, level );
-    vec_st( level1v, 0x10, level );
-    vec_st( level2v, 0x20, level );
-    vec_st( level3v, 0x30, level ); // FIXME?: write level[15]
+    vec_st( tmp0v, 0x00, level );
+    vec_st( tmp1v, 0x10, level );
 }
index 7bcde437d05d3ac0bee7264338e4879984d70f44..fa3023b112538ed5ec07c2ed43c496128c4d5dd0 100644 (file)
@@ -44,10 +44,10 @@ void x264_sub16x16_dct8_altivec( int16_t dct[4][8][8],
 void x264_add8x8_idct8_altivec( uint8_t *dst, int16_t dct[8][8] );
 void x264_add16x16_idct8_altivec( uint8_t *dst, int16_t dct[4][8][8] );
 
-void x264_zigzag_scan_4x4_frame_altivec( int level[16], int16_t dct[4][4] );
-void x264_zigzag_scan_4x4ac_frame_altivec( int level[15], int16_t dct[4][4] );
+void x264_zigzag_scan_4x4_frame_altivec( int16_t level[16], int16_t dct[4][4] );
+void x264_zigzag_scan_4x4ac_frame_altivec( int16_t level[15], int16_t dct[4][4] );
 
-void x264_zigzag_scan_4x4_field_altivec( int level[16], int16_t dct[4][4] );
-void x264_zigzag_scan_4x4ac_field_altivec( int level[15], int16_t dct[4][4] );
+void x264_zigzag_scan_4x4_field_altivec( int16_t level[16], int16_t dct[4][4] );
+void x264_zigzag_scan_4x4ac_field_altivec( int16_t level[15], int16_t dct[4][4] );
 
 #endif