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, 14 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