]> granicus.if.org Git - libx264/commitdiff
x86: AVX-512 zigzag_scan_4x4_field
authorHenrik Gramner <henrik@gramner.com>
Sat, 25 Mar 2017 21:13:22 +0000 (22:13 +0100)
committerHenrik Gramner <henrik@gramner.com>
Sun, 21 May 2017 20:42:17 +0000 (22:42 +0200)
common/dct.c
common/x86/dct-a.asm
common/x86/dct.h

index 5c1b8b5c4ee22ea8429c76f6ec43d8cafc705dc6..1be89350735d0ee527cc70bcda79384a59b21d6e 100644 (file)
@@ -988,6 +988,7 @@ void x264_zigzag_init( int cpu, x264_zigzag_function_t *pf_progressive, x264_zig
 #endif // ARCH_X86_64
     if( cpu&X264_CPU_AVX512 )
     {
+        pf_interlaced->scan_4x4  = x264_zigzag_scan_4x4_field_avx512;
         pf_progressive->scan_4x4 = x264_zigzag_scan_4x4_frame_avx512;
         pf_progressive->scan_8x8 = x264_zigzag_scan_8x8_frame_avx512;
     }
@@ -1033,6 +1034,7 @@ void x264_zigzag_init( int cpu, x264_zigzag_function_t *pf_progressive, x264_zig
     }
     if( cpu&X264_CPU_AVX512 )
     {
+        pf_interlaced->scan_4x4  = x264_zigzag_scan_4x4_field_avx512;
         pf_progressive->scan_4x4 = x264_zigzag_scan_4x4_frame_avx512;
         pf_progressive->scan_8x8 = x264_zigzag_scan_8x8_frame_avx512;
     }
index a9b853c4cc03e51feb58ce1c918a7bff3e6d8a5a..5a4f316ad969556e7aa3771eff0f7bfbe986dbb9 100644 (file)
@@ -1906,6 +1906,13 @@ cglobal zigzag_scan_4x4_frame, 2,2
     mova      [r0], m0
     RET
 
+cglobal zigzag_scan_4x4_field, 2,2
+    mova        m0, [r1]
+    pshufd    xmm1, [r1+8], q3102
+    mova      [r0], m0
+    movu    [r0+8], xmm1
+    RET
+
 cglobal zigzag_scan_8x8_frame, 2,2
     psrld       m0, [scan_frame_avx512], 4
     mova        m1, [r1+0*64]
@@ -1944,6 +1951,13 @@ cglobal zigzag_scan_4x4_frame, 2,2
     mova      [r0], m0
     RET
 
+cglobal zigzag_scan_4x4_field, 2,2
+    mova        m0, [r1]
+    pshuflw   xmm1, [r1+4], q3102
+    mova      [r0], m0
+    movq    [r0+4], xmm1
+    RET
+
 INIT_ZMM avx512
 cglobal zigzag_scan_8x8_frame, 2,2
     psrlw       m0, [scan_frame_avx512], 4
index 6254368b0ee2c72abb25ca467e13f07ada27e717..1a5c75c431e4ade920c4ec0e5baed709c0dd86b8 100644 (file)
@@ -113,8 +113,9 @@ void x264_zigzag_scan_4x4_frame_ssse3 ( int16_t level[16], int16_t dct[16] );
 void x264_zigzag_scan_4x4_frame_avx   ( dctcoef level[16], dctcoef dct[16] );
 void x264_zigzag_scan_4x4_frame_xop   ( dctcoef level[16], dctcoef dct[16] );
 void x264_zigzag_scan_4x4_frame_avx512( dctcoef level[16], dctcoef dct[16] );
-void x264_zigzag_scan_4x4_field_sse2 ( int32_t level[16], int32_t dct[16] );
-void x264_zigzag_scan_4x4_field_sse  ( int16_t level[16], int16_t dct[16] );
+void x264_zigzag_scan_4x4_field_sse   ( int16_t level[16], int16_t dct[16] );
+void x264_zigzag_scan_4x4_field_sse2  ( int32_t level[16], int32_t dct[16] );
+void x264_zigzag_scan_4x4_field_avx512( dctcoef level[16], dctcoef dct[16] );
 void x264_zigzag_scan_8x8_field_xop  ( int16_t level[64], int16_t dct[64] );
 void x264_zigzag_scan_8x8_field_avx  ( int32_t level[64], int32_t dct[64] );
 void x264_zigzag_scan_8x8_field_sse4 ( int32_t level[64], int32_t dct[64] );