Ticket #1227: 0001-modify-macro-h264_chroma_mc8-and-h264_chroma_mc4-pat.patch

File 0001-modify-macro-h264_chroma_mc8-and-h264_chroma_mc4-pat.patch, 6.7 KB (added by bruce-wu, 4 years ago)

a patch for bug #1227

  • libavcodec/arm/h264cmc_neon.S

    From e387d69a178a627222905ef9d6dd88dcabd1d143 Mon Sep 17 00:00:00 2001
    From: bruce-wu <bruce-wu@hotmail.com>
    Date: Sat, 22 Sep 2012 13:02:15 +0800
    Subject: [PATCH] modify-macro-h264_chroma_mc8-and-h264_chroma_mc4-patch
    
    ---
     libavcodec/arm/h264cmc_neon.S |   62 +++++++++++++++++-----------------------
     1 files changed, 26 insertions(+), 36 deletions(-)
    
    diff --git a/libavcodec/arm/h264cmc_neon.S b/libavcodec/arm/h264cmc_neon.S
    index c7e5460..3aeb545 100644
    a b T cmp r7, #0 
    5858        vdup.8          d1,  r12 
    5959        vld1.8          {d4, d5}, [r1], r4 
    6060        vdup.8          d2,  r6 
    61         vld1.8          {d6, d7}, [r5], r4 
    6261        vdup.8          d3,  r7 
    6362 
    6463        vext.8          d5,  d4,  d5,  #1 
    65         vext.8          d7,  d6,  d7,  #1 
    6664 
    67 1:      pld             [r5] 
     651: 
     66        vld1.64         {d6, d7}, [r5], r4 
     67        pld             [r5] 
    6868        vmull.u8        q8,  d4,  d0 
     69        vext.8          d7,  d6,  d7,  #1 
    6970        vmlal.u8        q8,  d5,  d1 
    7071        vld1.8          {d4, d5}, [r1], r4 
    7172        vmlal.u8        q8,  d6,  d2 
    T cmp r7, #0 
    7677        vmlal.u8        q9,  d7,  d1 
    7778        vmlal.u8        q9,  d4,  d2 
    7879        vmlal.u8        q9,  d5,  d3 
    79         vld1.8          {d6, d7}, [r5], r4 
    8080        pld             [r1] 
    8181  .ifc \codec,h264 
    8282        vrshrn.u16      d16, q8,  #6 
    T cmp r7, #0 
    9292        vld1.8          {d21}, [lr,:64], r2 
    9393        vrhadd.u8       q8,  q8,  q10 
    9494  .endif 
    95         vext.8          d7,  d6,  d7,  #1 
    9695        vst1.8          {d16}, [r0,:64], r2 
    9796        vst1.8          {d17}, [r0,:64], r2 
    9897        bgt             1b 
    T cmp r7, #0 
    108107 
    109108        add             r5,  r1,  r2 
    110109        lsl             r4,  r2,  #1 
     110 
     1113: 
    111112        vld1.8          {d4}, [r1], r4 
    112113        vld1.8          {d6}, [r5], r4 
    113114 
    114 3:      pld             [r5] 
     115        pld             [r5] 
    115116        vmull.u8        q8,  d4,  d0 
    116117        vmlal.u8        q8,  d6,  d1 
    117         vld1.8          {d4}, [r1], r4 
    118118        vmull.u8        q9,  d6,  d0 
    119119        vmlal.u8        q9,  d4,  d1 
    120         vld1.8          {d6}, [r5], r4 
    121120  .ifc \codec,h264 
    122121        vrshrn.u16      d16, q8,  #6 
    123122        vrshrn.u16      d17, q9,  #6 
    T cmp r7, #0 
    145144        vext.8          d5,  d4,  d5,  #1 
    146145        vext.8          d7,  d6,  d7,  #1 
    147146 
    148 5:      pld             [r1] 
     147        pld             [r1] 
    149148        subs            r3,  r3,  #2 
    150149        vmull.u8        q8,  d4,  d0 
    151150        vmlal.u8        q8,  d5,  d1 
    152         vld1.8          {d4, d5}, [r1], r2 
    153151        vmull.u8        q9,  d6,  d0 
    154152        vmlal.u8        q9,  d7,  d1 
    155153        pld             [r1] 
    156         vext.8          d5,  d4,  d5,  #1 
    157154  .ifc \codec,h264 
    158155        vrshrn.u16      d16, q8,  #6 
    159156        vrshrn.u16      d17, q9,  #6 
    T cmp r7, #0 
    168165        vld1.8          {d21}, [lr,:64], r2 
    169166        vrhadd.u8       q8,  q8,  q10 
    170167  .endif 
    171         vld1.8          {d6, d7}, [r1], r2 
    172         vext.8          d7,  d6,  d7,  #1 
    173168        vst1.8          {d16}, [r0,:64], r2 
    174169        vst1.8          {d17}, [r0,:64], r2 
    175         bgt             5b 
     170        bgt             4b 
    176171 
    177172        pop             {r4-r7, pc} 
    178173endfunc 
    endfunc 
    182177.macro  h264_chroma_mc4 type, codec=h264 
    183178function ff_\type\()_\codec\()_chroma_mc4_neon, export=1 
    184179        push            {r4-r7, lr} 
    185         ldrd            r4,  r5,  [sp, #20] 
     180        ldrd            r4,  [sp, #20] 
    186181  .ifc \type,avg 
    187182        mov             lr,  r0 
    188183  .endif 
    T cmp r7, #0 
    216211        vdup.8          d1,  r12 
    217212        vld1.8          {d4},     [r1], r4 
    218213        vdup.8          d2,  r6 
    219         vld1.8          {d6},     [r5], r4 
    220214        vdup.8          d3,  r7 
    221215 
    222216        vext.8          d5,  d4,  d5,  #1 
    223         vext.8          d7,  d6,  d7,  #1 
    224         vtrn.32         d4,  d5 
    225         vtrn.32         d6,  d7 
    226  
    227217        vtrn.32         d0,  d1 
    228218        vtrn.32         d2,  d3 
     219        vtrn.32         d4,  d5 
    229220 
    230 1:      pld             [r5] 
     2211: 
     222        vld1.8          {d6},     [r5], r4 
     223        pld             [r5] 
     224        vext.8          d7,  d6,  d7,  #1 
    231225        vmull.u8        q8,  d4,  d0 
    232         vmlal.u8        q8,  d6,  d2 
     226        vtrn.32         d6,  d7 
     227 
    233228        vld1.8          {d4},     [r1], r4 
     229        vmlal.u8        q8,  d6,  d2 
    234230        vext.8          d5,  d4,  d5,  #1 
    235         vtrn.32         d4,  d5 
    236231        vmull.u8        q9,  d6,  d0 
     232        vtrn.32         d4,  d5 
    237233        vmlal.u8        q9,  d4,  d2 
    238         vld1.8          {d6},     [r5], r4 
     234 
    239235        vadd.i16        d16, d16, d17 
    240236        vadd.i16        d17, d18, d19 
    241237  .ifc \codec,h264 
    T cmp r7, #0 
    251247        vld1.32         {d20[1]}, [lr,:32], r2 
    252248        vrhadd.u8       d16, d16, d20 
    253249  .endif 
    254         vext.8          d7,  d6,  d7,  #1 
    255         vtrn.32         d6,  d7 
    256250        vst1.32         {d16[0]}, [r0,:32], r2 
    257251        vst1.32         {d16[1]}, [r0,:32], r2 
    258252        bgt             1b 
    T cmp r7, #0 
    271265        add             r5,  r1,  r2 
    272266        lsl             r4,  r2,  #1 
    273267        vld1.32         {d4[0]},  [r1], r4 
     2683: 
    274269        vld1.32         {d4[1]},  [r5], r4 
    275270 
    276 3:      pld             [r5] 
     271        pld             [r5] 
    277272        vmull.u8        q8,  d4,  d0 
    278273        vld1.32         {d4[0]},  [r1], r4 
    279274        vmull.u8        q9,  d4,  d1 
    280         vld1.32         {d4[1]},  [r5], r4 
     275 
    281276        vadd.i16        d16, d16, d17 
    282277        vadd.i16        d17, d18, d19 
    283278  .ifc \codec,h264 
    T cmp r7, #0 
    306301        vtrn.32         d4,  d5 
    307302        vtrn.32         d6,  d7 
    308303 
    309 5:      vmull.u8        q8,  d4,  d0 
     304        vmull.u8        q8,  d4,  d0 
    310305        vmull.u8        q9,  d6,  d0 
    311306        subs            r3,  r3,  #2 
    312         vld1.8          {d4},     [r1], r2 
    313         vext.8          d5,  d4,  d5,  #1 
    314         vtrn.32         d4,  d5 
     307 
    315308        vadd.i16        d16, d16, d17 
    316309        vadd.i16        d17, d18, d19 
    317310        pld             [r1] 
    T cmp r7, #0 
    326319        vld1.32         {d20[1]}, [lr,:32], r2 
    327320        vrhadd.u8       d16, d16, d20 
    328321  .endif 
    329         vld1.8          {d6},     [r1], r2 
    330         vext.8          d7,  d6,  d7,  #1 
    331         vtrn.32         d6,  d7 
    332322        pld             [r1] 
    333323        vst1.32         {d16[0]}, [r0,:32], r2 
    334324        vst1.32         {d16[1]}, [r0,:32], r2 
    335         bgt             5b 
     325        bgt             4b 
    336326 
    337327        pop             {r4-r7, pc} 
    338328endfunc