+
+void x264_zigzag_scan_4x4_frame_altivec( int16_t level[16], int16_t dct[16] )
+{
+ vec_s16_t dct0v, dct1v;
+ vec_s16_t tmp0v, tmp1v;
+
+ dct0v = vec_ld(0x00, dct);
+ dct1v = vec_ld(0x10, dct);
+
+ const vec_u8_t sel0 = (vec_u8_t) CV(0,1,8,9,2,3,4,5,10,11,16,17,24,25,18,19);
+ const vec_u8_t sel1 = (vec_u8_t) CV(12,13,6,7,14,15,20,21,26,27,28,29,22,23,30,31);
+
+ tmp0v = vec_perm( dct0v, dct1v, sel0 );
+ tmp1v = vec_perm( dct0v, dct1v, sel1 );
+
+ vec_st( tmp0v, 0x00, level );
+ vec_st( tmp1v, 0x10, level );
+}
+
+void x264_zigzag_scan_4x4_field_altivec( int16_t level[16], int16_t dct[16] )
+{
+ vec_s16_t dct0v, dct1v;
+ vec_s16_t tmp0v, tmp1v;
+
+ dct0v = vec_ld(0x00, dct);
+ dct1v = vec_ld(0x10, dct);
+
+ const vec_u8_t sel0 = (vec_u8_t) CV(0,1,2,3,8,9,4,5,6,7,10,11,12,13,14,15);
+
+ tmp0v = vec_perm( dct0v, dct1v, sel0 );
+ tmp1v = dct1v;
+
+ vec_st( tmp0v, 0x00, level );
+ vec_st( tmp1v, 0x10, level );
+}
+#endif // !HIGH_BIT_DEPTH
+