diff mbox series

[FFmpeg-devel,v3,5/6] lavc/aarch64: clean-up sao band 8x8 function formatting

Message ID 20220104052018.9541-5-jdek@itanimul.li
State Accepted
Commit 89a2ed4a8b72683d0a8dfcb8c16c7a97eb740d5b
Headers show
Series [FFmpeg-devel,v3,1/6] lavc/arm: dont assign hevc_qpel functions for non-multiple of 8 widths | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc fail Make fate failed

Commit Message

J. Dekker Jan. 4, 2022, 5:20 a.m. UTC
Signed-off-by: J. Dekker <jdek@itanimul.li>
---
 libavcodec/aarch64/hevcdsp_sao_neon.S | 65 +++++++++++----------------
 1 file changed, 25 insertions(+), 40 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/aarch64/hevcdsp_sao_neon.S b/libavcodec/aarch64/hevcdsp_sao_neon.S
index 167b9676d8..73b0b3b056 100644
--- a/libavcodec/aarch64/hevcdsp_sao_neon.S
+++ b/libavcodec/aarch64/hevcdsp_sao_neon.S
@@ -30,24 +30,21 @@ 
 //                      int width, int height)
 function ff_hevc_sao_band_filter_8x8_8_neon, export=1
         sub             sp,  sp, #64
-        stp            xzr, xzr, [sp]
-        stp            xzr, xzr, [sp, #16]
-        stp            xzr, xzr, [sp, #32]
-        stp            xzr, xzr, [sp, #48]
+        stp             xzr, xzr, [sp]
+        stp             xzr, xzr, [sp, #16]
+        stp             xzr, xzr, [sp, #32]
+        stp             xzr, xzr, [sp, #48]
         mov             w8,  #4
-0:
-        ldrsh           x9, [x4,  x8, lsl #1] // x9 = sao_offset_val[k+1]
+0:      ldrsh           x9, [x4,  x8, lsl #1]      // sao_offset_val[k+1]
         subs            w8,  w8,  #1
-        add            w10,  w8,  w5 // x10 = k + sao_left_class
-        and            w10, w10, #0x1F
+        add             w10, w8,  w5               // k + sao_left_class
+        and             w10, w10, #0x1F
         strh            w9, [sp, x10, lsl #1]
         bne             0b
-        ld1            {v16.16b-v19.16b}, [sp], #64
-        movi           v20.8h,   #1
-1:      // beginning of line
-        mov             w8,  w6
-2:
-        // Simple layout for accessing 16bit values
+        ld1             {v16.16b-v19.16b}, [sp], #64
+        movi            v20.8h,   #1
+1:      mov             w8,  w6                    // beginning of line
+2:      // Simple layout for accessing 16bit values
         // with 8bit LUT.
         //
         //   00  01  02  03  04  05  06  07
@@ -55,33 +52,21 @@  function ff_hevc_sao_band_filter_8x8_8_neon, export=1
         // |xDE#xAD|xCA#xFE|xBE#xEF|xFE#xED|....
         // +----------------------------------->
         //    i-0     i-1     i-2     i-3
-        // dst[x] = av_clip_pixel(src[x] + offset_table[src[x] >> shift]);
-        ld1            {v2.8b}, [x1]
-        // load src[x]
-        uxtl            v0.8h,  v2.8b
-        // >> shift
-        ushr            v2.8h,  v0.8h, #3 // BIT_DEPTH - 3
-        // x2 (access lower short)
-        shl             v1.8h,  v2.8h, #1 // low (x2, accessing short)
-        // +1 access upper short
-        add             v3.8h,  v1.8h, v20.8h
-        // shift insert index to upper byte
-        sli             v1.8h,  v3.8h, #8
-        // table
-        tbx            v2.16b, {v16.16b-v19.16b}, v1.16b
-        // src[x] + table
-        add             v1.8h,  v0.8h, v2.8h
-        // clip + narrow
-        sqxtun          v4.8b,  v1.8h
-        // store
-        st1            {v4.8b}, [x0]
-        // done 8 pixels
-        subs            w8, w8,  #8
+        ld1             {v2.8b}, [x1]              // dst[x] = av_clip_pixel(src[x] + offset_table[src[x] >> shift]);
+        uxtl            v0.8h,  v2.8b              // load src[x]
+        ushr            v2.8h,  v0.8h, #3          // >> BIT_DEPTH - 3
+        shl             v1.8h,  v2.8h, #1          // low (x2, accessing short)
+        add             v3.8h,  v1.8h, v20.8h      // +1 access upper short
+        sli             v1.8h,  v3.8h, #8          // shift insert index to upper byte
+        tbx             v2.16b, {v16.16b-v19.16b}, v1.16b // table
+        add             v1.8h,  v0.8h, v2.8h       // src[x] + table
+        sqxtun          v4.8b,  v1.8h              // clip + narrow
+        st1             {v4.8b}, [x0]              // store
+        subs            w8, w8,  #8                // done 8 pixels
         bne             2b
-        // finished line
-        subs            w7, w7,  #1
-        add             x0, x0,  x2 // dst += stride_dst
-        add             x1, x1,  x3 // src += stride_src
+        subs            w7, w7,  #1                // finished line, prep. new
+        add             x0, x0,  x2                // dst += stride_dst
+        add             x1, x1,  x3                // src += stride_src
         bne             1b
         ret
 endfunc