Revision 750f5034 libavcodec/arm/mdct_neon.S

View differences:

libavcodec/arm/mdct_neon.S
38 38
        mov             r12,  #-16
39 39
        sub             r7,  r7,  #16
40 40

  
41
        vld1.32         {d16-d17},[r7,:128],r12 @ d16=x,n1 d17=x,n0
42
        vld1.32         {d0-d1},  [r2,:128]!    @ d0 =m0,x d1 =m1,x
41
        vld2.32         {d16-d17},[r7,:128],r12 @ d16=x,n1 d17=x,n0
42
        vld2.32         {d0-d1},  [r2,:128]!    @ d0 =m0,x d1 =m1,x
43
        vrev64.32       d17, d17
43 44
        vld1.32         {d2},     [r4,:64]!     @ d2=c0,c1
45
        vmul.f32        d6,  d17, d2
44 46
        vld1.32         {d3},     [r5,:64]!     @ d3=s0,s1
45
        vuzp.32         d17, d16
46
        vuzp.32         d0,  d1
47
        vmul.f32        d6,  d16, d2
48 47
        vmul.f32        d7,  d0,  d2
49 48
1:
50 49
        subs            lr,  lr,  #2
51 50
        ldr             r6,  [r3], #4
52 51
        vmul.f32        d4,  d0,  d3
53
        vmul.f32        d5,  d16, d3
52
        vmul.f32        d5,  d17, d3
54 53
        vsub.f32        d4,  d6,  d4
55 54
        vadd.f32        d5,  d5,  d7
56 55
        uxtah           r8,  r1,  r6,  ror #16
57 56
        uxtah           r6,  r1,  r6
58 57
        beq             1f
59
        vld1.32         {d16-d17},[r7,:128],r12
60
        vld1.32         {d0-d1},  [r2,:128]!
61
        vuzp.32         d17, d16
58
        vld2.32         {d16-d17},[r7,:128],r12
59
        vld2.32         {d0-d1},  [r2,:128]!
60
        vrev64.32       d17, d17
62 61
        vld1.32         {d2},     [r4,:64]!
63
        vuzp.32         d0,  d1
64
        vmul.f32        d6,  d16, d2
62
        vmul.f32        d6,  d17, d2
65 63
        vld1.32         {d3},     [r5,:64]!
66 64
        vmul.f32        d7,  d0,  d2
67 65
        vst2.32         {d4[0],d5[0]}, [r6,:64]
......
95 93
        mov             r8,  r6
96 94
        mov             r0,  r3
97 95

  
98
        vld1.32         {d0-d1},  [r3,:128], r7 @ d0 =i1,r1 d1 =i0,r0
99
        vld1.32         {d20-d21},[r6,:128]!    @ d20=i2,r2 d21=i3,r3
96
        vld2.32         {d0-d1},  [r3,:128], r7 @ d0 =i1,r1 d1 =i0,r0
97
        vld2.32         {d20-d21},[r6,:128]!    @ d20=i2,r2 d21=i3,r3
100 98
        vld1.32         {d18},    [r2,:64], r12 @ d18=s1,s0
101
        vuzp.32         d20, d21
102
        vuzp.32         d0,  d1
103 99
1:
104 100
        subs            lr,  lr,  #2
105 101
        vmul.f32        d7,  d0,  d18
......
118 114
        vsub.f32        d4,  d4,  d24
119 115
        vsub.f32        d5,  d5,  d25
120 116
        beq             1f
121
        vld1.32         {d0-d1},  [r3,:128], r7
122
        vld1.32         {d20-d21},[r6,:128]!
117
        vld2.32         {d0-d1},  [r3,:128], r7
118
        vld2.32         {d20-d21},[r6,:128]!
123 119
        vld1.32         {d18},    [r2,:64], r12
124
        vuzp.32         d20, d21
125
        vuzp.32         d0,  d1
126 120
        vrev64.32       q3,  q3
127
        vtrn.32         d4,  d6
128
        vtrn.32         d5,  d7
129
        vswp            d5,  d6
130
        vst1.32         {d4-d5},  [r0,:128], r7
131
        vst1.32         {d6-d7},  [r8,:128]!
121
        vst2.32         {d4,d6},  [r0,:128], r7
122
        vst2.32         {d5,d7},  [r8,:128]!
132 123
        b               1b
133 124
1:
134 125
        vrev64.32       q3,  q3
135
        vtrn.32         d4,  d6
136
        vtrn.32         d5,  d7
137
        vswp            d5,  d6
138
        vst1.32         {d4-d5},  [r0,:128]
139
        vst1.32         {d6-d7},  [r8,:128]
126
        vst2.32         {d4,d6},  [r0,:128]
127
        vst2.32         {d5,d7},  [r8,:128]
140 128

  
141 129
        pop             {r4-r8,pc}
142 130
.endfunc

Also available in: Unified diff